Re: [問題] 傳輸時間非線性
※ 引述《wwwc (secret)》之銘言:
: tmp = alice.gets
我不是很確定
但我看Ruby source code中gets的實作 (在io.c)
他應該是每次最多讀8192 bytes
然後附加到之前的字串上
所以一次讀1M左右 可能會造成不斷的allocate memory & copy data
而且看到這行
rb_str_resize(str, last + len);
似乎每次讀取 只會allocate剛剛好的memory
所以看樣子 當資料足夠大的時候
這個演算法會有O(N^2)的time complexity
==
其實手邊沒有灌ruby的環境
以上純屬嘴炮 XD
gets看起來是用在讀取一般文字輸入
資料量大的時候最好不要用gets
試試用別的function還會不會這樣
P.S. write我有稍微看一下 應該是O(N)沒問題
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.33.124
※ 編輯: yzugsr 來自: 123.193.33.124 (06/21 00:16)
※ 編輯: yzugsr 來自: 123.193.33.124 (06/21 00:17)
※ 編輯: yzugsr 來自: 123.193.33.124 (06/21 00:18)
推
06/21 00:32, , 1F
06/21 00:32, 1F
→
06/21 00:43, , 2F
06/21 00:43, 2F
推
06/21 12:32, , 3F
06/21 12:32, 3F
推
06/21 14:39, , 4F
06/21 14:39, 4F
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章