我有一個40000個單詞的列表,我希望隨機使用Javascript(node.js)隨機返回20-40個單詞,來自客戶端的請求。每次從文件中讀取它,或將它存儲在一個數組中然後訪問它會更好嗎?頻繁的文件讀取VS訪問巨大的陣列
1
A
回答
1
巨大的數組(∈RAM):
如果你有一個很好的RAM,在巨大的數組加載文件係爲好。 只要在運行Node.js應用程序時不要忘記增加RAM的使用。
node --max_old_space_size=2000 index.js //#default is 512Mo
然後,在加載文件的行到數組:
var JFile=require('jfile');
var words=new JFile('words.txt');
//--> words.lines // return an array of lines, then , you can handle it
var between20_40= Math.floor(Math.random() * (40 - 20 + 1)) + 20;
var randome_words=words.lines.sort().slice(0,between20_40) // will get n lines randomly (n between 20 & 40)
Access文件(∈HDD):
如果你的RAM容量小&你擔心,訪問文件是更好:
var spawn = require('child_process').spawn;
var between20_40= Math.floor(Math.random() * (40 - 20 + 1)) + 20;
var shellSyntaxCommand = `sort -R words.txt | head -n ${between20_40}`;
var output=spawn('sh', ['-c', shellSyntaxCommand], { stdio: 'inherit' });
結論:
處理的內存RAM比HDD要好得多。因此,如果你有一個好的RAM容量,我們推薦第一個選項。
4
你的問題並不清楚,因爲它沒有指定如何從文件中挑選單詞。
我仍然會給出一個基於hunch的答案。
對計算機本地磁盤的I/O總是比訪問內存中的數據要慢。如果你的數據(單詞)有一個扁平的排列(即有40000個條目的簡單數組),你可以將它加載到一個內存數組中,並通過隨機化你從數組中選擇的索引來訪問單詞。
希望這有幫助。
0
從數組中訪問單詞要快得多,因爲您只需隨機化索引並在該索引處進行提取,同時從文件中讀取隨機單詞即可使用更繁瑣的方法。但是從文件讀取取決於單詞在文件中的顯示方式。
1
在黑名單算法中有完全相同的用例。我發現將一個40.000字加載到一個JS對象中是絕對沒有問題的。因此,每當你想要獲取這些值時重讀它是非常不必要的。
所以你的解決方案應該是:加載一次,藉助數組索引(不要迭代數組)讀取多次。
相關問題
- 1. Python:巨大的文件讀取通過使用linecache Vs正常文件訪問打開()
- 2. 閱讀巨大的文本文件Java
- 3. NodeJS通過文件讀取巨大的目錄文件
- 4. 速度權衡:頻繁地從文件中讀取VS使用動態內存
- 5. 不經常寫和頻繁的讀取
- 6. 頻繁訪問磁盤的需求?
- 7. 如何讀取PHP中的巨大文本文件?
- 8. Q/kdb +讀取巨大的文本文件
- 9. 是Clojure的讀取文件的結構,即具有開放頻繁的訪問和clojure.java.io/reader,效率不夠高?
- 10. MongoDB使用巨大的陣列減小文檔的大小
- 11. 在java中讀取巨大的Excel文件(500K行)
- 12. 如何讀取或寫入巨大的Unicode文件?
- 13. 用於從java讀取巨大.pdf文件的最佳API
- 14. 性能 - 在C中逐行讀取巨大的FASTA文件C
- 15. 動態分配巨大的3D陣列
- 16. 巨大的C文件調試問題
- 17. 頻繁訪問被拒絕臨時ASP.NET文件
- 18. 讀取一個12 MB的巨大文件時出現問題(java.lang.OutOfMemoryError)
- 19. 從大文件訪問n-gram頻率
- 20. 在Python中閱讀巨大文件
- 21. 發現號的頻繁序列中的陣列
- 22. 不一致,但頻繁EXC_BAD_ACCESS訪問
- 23. MANOVA - 巨大的矩陣
- 24. 巨大的main.cs文件
- 25. 使用javascript創建巨大的選項列表vs vs標記
- 26. Perl的讀文件VS橫移陣列性能
- 27. 讀取一個csv文件到陣列
- 28. 從文件中讀取到2陣列
- 29. 如何從一個巨大的文本文件中讀取文本塊?
- 30. 從巨大文件中讀取和繪製數據
好主題..我的回答如下。 –