我已经编写了代码,并且通过循环它实际上扫描单词并找到提供单词的数量。但这仅在数据小于1 GB且请求超时约30分钟时有效。任何人都可以建议任何更好的解决方案来扫描并查找文件中的单词数,以便我不必将请求时间增加超过30分钟,并且它可以扫描大量数据。是否可以通过冷熔或我应该寻找其他技术?
答案 0 :(得分:0)
在Coldfusion(或Lucee)中处理大文件时,我总是考虑使用替代技术。
为了处理文件,您需要在处理之前将文件加载到内存中。如果直接使用Java,则将使用缓冲区对象,并且一次仅将当前行保留在内存中。如果将工作委托给Coldfusion,则不能保证这些行都可以进行垃圾回收,因此有可能最终导致您吃掉内存并减慢速度。除此之外,您还需要根据其字数以某种结构存储每个唯一字,这意味着您将经常使用几个单词,而很多单词仅使用一次;另一个(可能)大量的内存消耗者。
考虑到这些问题,我大文件的查找方法要么是直接开始使用Java,以确保我使用了正确的缓冲技术,要么是在python或ruby等替代工具中创建了一个实用程序,并通过cfexecute委托了工作。 那,没有理由您不能在CF中做到这一点,您只需要查看过程的哪一部分会减慢您的速度,并首先处理并进行优化。您可以将作业卸载到cfthread中并在以后提取结果吗?更好的数据结构或存储方法适合吗?
如果不查看数据和代码,就不可能更具体。