存储矩阵并执行计算

时间:2012-03-04 20:25:37

标签: php matrix

在网页的每个请求中,我必须将矩阵乘以向量。矩阵是对称的并且(可能)稀疏,尺寸约为500x500。矢量是从另一个矩阵中取出的一列,其尺寸约为500x100000。现在我的问题是如何存储矩阵并以有效的方式执行计算。我想用php进行计算,并使用mysql或硬盘存储矩阵,但我认为有更好的工具可用于此类任务。

如果您需要了解更多信息,请不要犹豫!

1 个答案:

答案 0 :(得分:0)

好的,所以我们在这里得到了一个真实的案例:

  • 500x100,000 = 50,000,000个元素。根据数据类型,这个 翻译为ca.如果忽略,则为50M-400M的内存中表示 按指数稀疏和地址。矩阵是对称的,将其降低到25-200M
  • 11%的非零密度意味着9个元素的开销 稀疏的贴身是一种收支平衡 - 对于小的而言并不是很有说服力 数据类型,但可能是64位数据类型的选项。

通过此工作可以为双层解决方案提供强有力的论据:

  • A(共享)“数据存储服务器”(MySQL是您的唯一选择 提到的)
  • 和(可能是PHP)前端。

使用PHP进行500x500矩阵乘法似乎不是一种非常有效的方法:PHP中的循环开销非常高,因此在循环内部完成的工作很少,您可能会浪费一些性能。 / p>

我建议采用稍微不同的解决方案:编写自己的后端(可能是C或C#),

  • 启动时将矩阵读入内存
  • 在(本地)套接字上侦听命令,例如“乘”
  • 在矩阵和给定数据上执行这些命令并返回结果

并通过PHP提供。通过这种方式,您可以获得核心功能的编译语言的处理速度,同时为前端提供PHP的简单性和以Web为中心。