• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hiugo
V2EX  ›  程序员

如何快速顺序生成一亿个数字

  •  
  •   hiugo · May 19, 2022 · 6690 views
    This topic created in 1630 days ago, the information mentioned may be changed or developed.

    rt , 从一顺序生成数字,直到一亿

    33 replies  •  2022-05-20 08:17:46 +08:00
    trn4
    trn4
    May 19, 2022
    1
    读取预先在内存中生成好的一亿个数字。占用 400M*4Byte=400MB 内存。
    westoy
    westoy
    May 19, 2022 via Android
    2
    mmap+seek+tell ?
    yousabuk
    yousabuk
    May 19, 2022 via iPhone❤️1
    3
    @xiadong1994 算得好,你咋算的?
    yousabuk
    yousabuk
    May 19, 2022 via iPhone
    4
    分配 100M 个 U32 (内存:100M * 4Byte = 400MB )

    分成 10 个并行循环赋值各自的内存地址,应该挺快的。
    trn4
    trn4
    May 19, 2022
    5
    @yousabuk #3 For 循环写一个呀。哈哈其实我的意思是这个提问没头没尾的,要快一律按可以预处理理解。
    thedrwu
    thedrwu
    May 19, 2022 via Android❤️1
    6
    冷知识:普通 PC 单线程不到 10 分钟就能 print 出所有浮点数。
    Rocketer
    Rocketer
    May 19, 2022 via iPhone❤️1
    7
    你的场景是什么?
    msg7086
    msg7086
    May 19, 2022 via Android
    8
    for 循环直接写,然后编译的时候打开 simd 矢量化优化和 unroll loop 优化。再上去的话搞个多线程。
    deep89381
    deep89381
    May 19, 2022❤️5
    9
    是不是问题太简单了,不知有啥应有场景
    seq 1 100000000 > seq.txt
    whenov
    whenov
    May 19, 2022 via Android❤️2
    10
    什么叫生成?打印到屏幕?写入到硬盘?保存到内存?

    如果允许惰性求值的话,时间接近 0 秒
    luozic
    luozic
    May 19, 2022
    11
    这个数字是什么进制的? 需要输出到哪里?
    AV1
    AV1
    May 19, 2022
    12
    一击脱离?
    xuanbg
    xuanbg
    May 19, 2022
    13
    看你用什么存储了,如果是数组、链表、栈、位图这些有序的数据结构,那就压根不需要生成。用的时候根据数据结构直接就算出来了。
    coolmenu
    coolmenu
    May 19, 2022❤️1
    14
    刚看完房子那个帖子,看到这个标题,脑补成了如何快速弄到 1 亿,赶快点进一看看。。。。
    ipwx
    ipwx
    May 19, 2022❤️1
    15
    ❯ time seq 1 100000000 > /dev/null
    seq 1 100000000 > /dev/null 15.53s user 0.02s system 99% cpu 15.553 total
    Kinnice
    Kinnice
    May 19, 2022
    16
    @coolmenu 真看到相关帖子 @我一下,我也想
    ispinfx
    ispinfx
    May 19, 2022
    17
    `list(range(100000000))` -> 2 秒
    jaysonmac
    jaysonmac
    May 19, 2022 via Android
    19
    @yousabuk 100M 个 4Byte 不等于 400MB 哦,除非按 1000 进制算。按 1024 算大概 381.5MB
    ffxrqyzby
    ffxrqyzby
    May 19, 2022
    20
    @jaysonmac #19 算的挺好, 下次别算了
    Chaconne
    Chaconne
    May 19, 2022
    21
    crunch 0123456789 0 9 -o test.txt
    BeautifulSoap
    BeautifulSoap
    May 19, 2022
    22
    lz 简直是一击脱离的典范

    也不说这一亿个数字是拿来干嘛的,如果只是放内存里需要的时候用一下,连计算都不需要计算,直接按照规律要的时候自动计算出指定位置的数就行了。这样连空间分配都不需要了

    如果要存到文件的话,一亿个 64 位整数需要 763MB 来存储,瓶颈不会在 cpu 或内存上,而在你硬盘上
    jessun1990
    jessun1990
    May 19, 2022
    23
    time seq 1 100000000 > /dev/null

    ________________________________________________________
    Executed in 612.18 millis fish external
    usr time 588.62 millis 125.00 micros 588.50 millis
    sys time 23.32 millis 50.00 micros 23.27 millis

    @ipwx 请问你用的是 mac 吗? 我的输出格式与你的不一样,我用的是 manjaro 。
    ipwx
    ipwx
    May 19, 2022
    24
    @jessun1990 是 mac 。看起来 Linux 做了优化,>/dev/null 不用过系统调用。mac 实打实系统调用花了 17 秒
    suyuyu
    suyuyu
    May 19, 2022
    25
    我想看看阿 3 的想法
    084
    084
    May 19, 2022
    26
    (base)  ~/ time seq 1 100000000 > /dev/null
    seq 1 100000000 > /dev/null 19.66s user 0.06s system 99% cpu 19.807 total
    084
    084
    May 19, 2022
    27
    @084 #26 黑果请求一战
    ipwx
    ipwx
    May 19, 2022
    28
    @jessun1990 顺便我的 Linux Mint 主机:

    $ time seq 1 100000000 > /dev/null

    real 0m0.544s
    user 0m0.536s
    sys 0m0.008s
    sunmker
    sunmker
    May 19, 2022
    29
    ubuntu@VM-16-14-ubuntu:~$ time seq 1 100000000 > /dev/null

    real 0m0.860s
    user 0m0.812s
    sys 0m0.048s
    dangyuluo
    dangyuluo
    May 19, 2022
    30
    定义快速
    wangweiggsn
    wangweiggsn
    May 19, 2022
    31
    我来个 Excel 版本的吧,2007 及以上版本都 ok 。
    左上角地址栏写 A:EA ,回车,这片区域被选中,编辑栏写公式:=ROW()+1048576*(COLUMN()-1) 然后按 ctrl+Enter ,我 i5-10210U+16G 内存配置,等 30 秒左右 OK ,1.37 亿个数据纵向整齐排列了。要横向的改下公式就行,很容易。需要的话保存文件为自己需要的格式即可。过程中电脑内存和 cpu 会基本占满,建议 公式-计算选项,选手动,否则算完后 CPU 占用率仍然较高。
    tramm
    tramm
    May 19, 2022
    32
    我也来一个:
    申请 1 亿个长度的 char 数组.
    其每个元素的内存地址就是你要的.
    documentzhangx66
    documentzhangx66
    May 20, 2022
    33
    time seq 1 100000000 > x.log

    real 0m25.580s
    user 0m2.975s
    sys 0m4.955s
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1335 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 19:20 · PVG 03:20 · LAX 11:20 · JFK 14:20
    ♥ Do have faith in what you're doing.