【发布时间】:2010-12-27 11:50:50
【问题描述】:
我正在编写一个 PHP 函数,该函数需要遍历一个指针数组,并为每个项目拉入该数据(无论是来自 MySQL 数据库还是平面文件)。由于可能有成千上万的迭代,任何人有任何优化它的想法吗?
我的第一个想法是拥有一个缓存数据的静态数组,我可以进行任何修改,任何修改都会更改该缓存数组,然后最后我可以将它刷新到磁盘。但是,在超过 1000 个项目的循环中,如果我只在数组中保留大约 30 个,这将毫无用处。每个项目都不算大,但内存中的 1000 多个项目太多了,因此需要磁盘存储。
数据只是压缩后的序列化对象。目前我正在使用数据库来存储数据,但我想也许平面文件会更快(我不关心并发问题,我不需要解析它,只需解压缩和反序列化)。我已经有一个自定义迭代器,它将一次拉入 5 个项目(以减少数据库连接)并将它们存储在此缓存中。但同样,当我需要迭代数千个时使用 30 的缓存是相当无用的。
基本上我只需要一种方法来快速迭代这些项目。
【问题讨论】:
-
我将尝试更清楚地解释自己...我正在编写一个神经元网络,所以我需要遍历一些神经元对象以影响它们的一些数据,然后保存它,进入下一个等等1000 多个神经元之后。然后我需要再次向后迭代(称为反向传播)。我认为最好的解决方案是在内存和 IO 访问之间找到一个媒介。如果我一次加载 100 个对象,这意味着更少的 IO 但更多的内存。
标签: php optimization neural-network concurrent-programming