gpt4 book ai didi

programming-languages - 用于开发处理大量字符串工件的算法的选项

转载 作者:行者123 更新时间:2023-12-04 05:33:16 25 4
gpt4 key购买 nike

我目前正在开发处理数十万个字符串(每个约 4000 个字符)的算法,并根据应用于这些字符串的函数的结果执行简单的操作。目前我使用 Java 和一个带有一张表的 Mysql 数据库:

 ID | String | attribute a | attribute b | ....
| | | | ....

基本上,该算法从一个 ID 开始,读取存储的字符串,对其执行函数(为当前事件列设置和读取属性)。例如,一个函数从字符串中提取一个 ID(简单的字符串解析),将此 ID 存储在“属性 a”列中。一旦条目被解析,算法读取“属性 a”,跳转到具有此 ID 的行,然后整个过程重新开始。

也许我有点想多了;但是当前的设置有如此多的开销,几乎不可能进行一些快速更改或快速测试查询。有没有更好的工具或编程语言可以直接在这样的大型数据集上进行操作,并为字符串操作提供有效的功能?

我绝对不介意花时间学习一门全新的语言,因为我相信为工作使用正确的工具可以节省时间并防止长期受挫。

最佳答案

我有一个宠物项目,多年来我一直在断断续续地工作。它存储大量字符串(尽管不是文本)。过去,我在内存中的 Java、带有数据库的 Scala、MySQL、内存中的 C、Python + Redis 中实现了它……最后是 Go。

Go 做得最好。我有大约 300,000 个字符串(虽然比你的短)存储在内存中的数据结构中。它们形成了一个可搜索、可分析的数据结构。我确信用例与您的用例足够相似,因此我的经验是相关的。

Go 在数据处理方面具有与 C 相似的效率。它有很好的语法,比如 Python,可以快速编码。它具有...类型安全的类型安全。它有垃圾收集功能。

我的建议是,学习 Go 并在内存中完成所有操作。依靠虚拟内存来容纳大型数据集。加载后,我的 RAM 中大约有 500 MB,但我不知道它会在两倍的情况下正常运行。

我不坚持到磁盘,因为我不需要。我可以在 15 分钟内从输入文件重新创建数据结构。该应用程序是一个持续运行的服务器。如果您正在运行大批量操作来进行分析,那可能是合适的。否则我相信你可以很容易地坚持到磁盘。

(FWIW 我说的是 www.folktunefinder.com 旋律搜索索引)

关于programming-languages - 用于开发处理大量字符串工件的算法的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com