Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 存储矩阵并执行计算_Php_Matrix - Fatal编程技术网

Php 存储矩阵并执行计算

Php 存储矩阵并执行计算,php,matrix,Php,Matrix,在每一个网页的要求,我必须乘以一个向量矩阵。矩阵对称且(可能)稀疏,尺寸约为500x500。向量是从另一个矩阵中提取的列,其尺寸约为500x100000。现在我的问题是如何存储矩阵并以有效的方式执行计算。我希望使用php进行计算,并使用mysql或硬盘存储矩阵,但我认为有更好的工具用于此类任务 如果你需要进一步了解,不要问 好的,我们这里有一个真实的例子: 500x100000=50000000个元件。这取决于数据类型 如果忽略,则转换为约50-400米的内存表示 稀疏性和地址索引。对称矩阵将

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


如果你需要进一步了解,不要问

好的,我们这里有一个真实的例子:

  • 500x100000=50000000个元件。这取决于数据类型 如果忽略,则转换为约50-400米的内存表示 稀疏性和地址索引。对称矩阵将其减少到25-200M
  • 11%的非零密度意味着 稀疏的地址是一个收支平衡-不是真的令人信服的小 数据类型,但可能是64位数据类型的选项
从这一点出发,可以为两层解决方案提供强有力的论据:

  • (共享的)“数据存储服务器”(MySQL是您可以选择的一个选项) (已提及)
  • 和一个(可能是PHP)前端
将PHP用于500x500矩阵乘法似乎不是一种非常有效的方法:PHP中的循环开销相当高,因此在循环内部完成的工作太少,可能会浪费一些性能

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

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

并通过PHP提供它。通过这种方式,您可以获得核心函数的编译语言的处理速度,同时前端具有PHP的简单性和web中心性。

矩阵有多稀疏?这对于评估MySQL存储非常重要。大约11%的条目具有非零值。这正是我想要的答案。我会试着选择第二种。