gpt4 book ai didi

c - 如何在调用之间的 Ruby 扩展中将 C 对象保留在内存中?

转载 作者:行者123 更新时间:2023-11-30 18:03:49 25 4
gpt4 key购买 nike

我正在 Rails 中开发一个 Web 应用程序,需要在响应请求时执行计算密集型数据查找和处理。

我已经编写了一个 ruby​​ C 扩展来执行此计算,但为了进一步加快速度,我需要创建一个索引。

为了保持索引快速,我想在内存中简单地使用 C 中的哈希表。这个哈希表会很大。内存约为 0.5 - 1 GB。我考虑过使用数据库,但我需要一个非常具体的索引格式,最终哈希表相当简单,而且速度非常快。

索引需要能够做两件事:

1) 响应查找请求2) 响应向索引添加项目的请求,而无需重新启动程序

我不想写一个完整的 C 服务器来构建和管理这个索引。

有没有一种方法可以使用上述两种方法编写 ruby​​ C 扩展,从而在扩展调用之间将索引保留在内存中?

是否有另一种方法可以实现我上面的需要,而无需用 C 编写完整的服务器?

最坏的情况,我可以编写一个我的 Rails 应用程序可以与之通信的 C 服务器,但我希望找到更简单的东西。

最佳答案

我认为哈希已经被解决了很多次。 MemcacheD 或 Redis 的一些风格。在本地主机上运行它应该使其非常快速且持久(相对于您的应用程序)。 Redis 还可以选择每隔 N 次更新或 N 分钟将缓存备份到磁盘(如果您确实想保留它)。

我会用 C 来做繁重的工作来计算所说的昂贵的事情。然后当我在 Ruby 中将其返回时,将其粘贴到 Memcache/Redis 中。

如果您需要将其放入 C 语言中的 Memcache/Redis 中,我相信两者都是用 C 语言编写的,因此利用这些库应该不会太难。

关于c - 如何在调用之间的 Ruby 扩展中将 C 对象保留在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015679/

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