我有一个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. 从巨大文件中读取和绘制数据
好主题..我的回答如下。 –