用php与c+进行处理+;

用php与c+进行处理+;,php,c++,performance,Php,C++,Performance,我需要设计一个使用哈希表的函数。它基本上是将数据插入哈希表并搜索项。通常,执行该函数需要15秒到10分钟。我应该在C++中实现这个函数并在PHP中使用系统调用,还是应该使用关联数组在PHP中实现它。这样会更有效率。每种方法的优缺点是什么 键将是一个字符串。该值将是一个包含两个其他结构的结构。 第一个结构基本上包含一个整数数组,第二个结构将包含一个整数对值数组。显然,PHP数组是作为链接哈希表实现的。看 在任何情况下,对于300件物品,您使用的容器类型可能不会有什么速度差异。如果可能的话,我会呆在

我需要设计一个使用哈希表的函数。它基本上是将数据插入哈希表并搜索项。通常,执行该函数需要15秒到10分钟。我应该在C++中实现这个函数并在PHP中使用系统调用,还是应该使用关联数组在PHP中实现它。这样会更有效率。每种方法的优缺点是什么

键将是一个字符串。该值将是一个包含两个其他结构的结构。
第一个结构基本上包含一个整数数组,第二个结构将包含一个整数对值数组。显然,PHP数组是作为链接哈希表实现的。看


在任何情况下,对于300件物品,您使用的容器类型可能不会有什么速度差异。如果可能的话,我会呆在PHP中。

PHP以其快速关联数组实现而闻名,但根据我的经验,C++仍然更快。几个月前,我需要实现快速前缀匹配,哈希表中有数千个前缀和数百万个要匹配的字符串。我同时制作了PHP和C++实现,我记得C++的速度快了10倍,消耗的内存也少得多。当然,这在很大程度上还取决于您的算法,而不仅仅是哈希表的实现。

试试看。这取决于你如何用两种语言实现它,你有多少数据,有多少内存,密钥分布等等。如果他说的是使用C,为什么这个问题加上C++?顺便说一下,如果你要使用C++,C++ 11就附带哈希表,即无序的映射、无序的集合、ECT。当我确信这些容器将超过OP的需要时,OBP会读取并考虑,但是效率C++是国王。为什么15秒到10分钟之间的巨大差异?同时也是对所有可能不同意我的人的一个先兆警告:我是根据个人经验说话的。在这种情况下,任何时候对大型数据集执行操作(例如对密钥进行哈希运算并将其存储在容器中,然后搜索该容器),最好使用系统语言(如C++)实现,事实上,在C++标准库中有一个完全符合您需要的容器,意味着您不必自己翻滚。PHP它本身就是一种解释语言。@knightrider,因此,它使用了其他用C等语言编写的容器。我真正要做的是,为了完成你想要做的事情,你必须经历的间接层次。现在你的数据集平均有300个项目,将来很可能会增长到30万个。那么PHP容器的性能可以接受吗?我非常怀疑会是这样。cpu需要执行的别名越多,运行速度就越慢。经典的例子,qsort vs std::sort。我也将尝试这个。但请解释一下PHP中的处理是否比使用C++和/或副系统调用更好versa@knightrider,留在PHP中更好,任何时候调用都不会显著提高性能。什么是“重要”取决于应用程序。调用PHP通常会大大增加开发和维护工作。对C++容器的调用可以说是1.5倍的速度。但PHP数组的访问时间是O(1),这意味着随着添加更多元素,该性能不会降低。另一方面,如果频繁访问此容器并且处于关键循环中,那么您需要平衡额外的开发工作和增加的速度。@knightrider,是的。所以我的观点是,C++中没有渐进的性能提升,即使C++可以通过元素数小的常数因子来加快。