Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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_Asp.net_Python_Frameworks_Benchmarking - Fatal编程技术网

Php 如何对不同的语言/框架进行基准测试?

Php 如何对不同的语言/框架进行基准测试?,php,asp.net,python,frameworks,benchmarking,Php,Asp.net,Python,Frameworks,Benchmarking,我想比较不同语言和/或同一语言中不同框架的性能。这是针对用于web开发的服务器端语言。我知道苹果对苹果的比较是不可能的,但我希望它尽可能不带偏见。以下是一些想法: 简单的“Hello World”页面 对象初始化 函数/方法调用 方法主体的范围从空到大 文件访问(读和写) 数据库访问 它们可以通过每秒请求数来衡量,也可以使用for循环多次。其中一些基准测试应该测量语言的开销(即:空函数调用),而不是它们执行特定任务的速度。我会采取一些预防措施: 它们将在同一台机器上运行,在新的安装上运

我想比较不同语言和/或同一语言中不同框架的性能。这是针对用于web开发的服务器端语言。我知道苹果对苹果的比较是不可能的,但我希望它尽可能不带偏见。以下是一些想法:

  • 简单的“Hello World”页面
  • 对象初始化
  • 函数/方法调用
    • 方法主体的范围从空到大
  • 文件访问(读和写)
  • 数据库访问
它们可以通过每秒请求数来衡量,也可以使用
for
循环多次。其中一些基准测试应该测量语言的开销(即:空函数调用),而不是它们执行特定任务的速度。我会采取一些预防措施:

  • 它们将在同一台机器上运行,在新的安装上运行,在后台的进程尽可能少
  • 我将尝试按照官方建议设置服务器;我不会尝试任何优化

我该如何改进这一点呢?

您将花费大量时间,并逐渐意识到这一切都是浪费。
在完成测试后,您将了解到1000000次空迭代的循环与现实生活相去甚远,这是apache基准测试的一部分。
然后你就不知道操作码缓存会毁掉你以前的所有结果。
然后您将了解到,单个DB查询将花费比API调用长1000倍的时间,因此,您对数据库访问方法的比较确实是浪费。

然后,您将了解memcache,它将允许您跳过您已经发现的一些可怕的瓶颈,等等。您将花费大量时间,并意识到这一切都是浪费。
在完成测试后,您将了解到1000000次空迭代的循环与现实生活相去甚远,这是apache基准测试的一部分。
然后你就不知道操作码缓存会毁掉你以前的所有结果。
然后您将了解到,单个DB查询将花费比API调用长1000倍的时间,因此,您对数据库访问方法的比较确实是浪费。

然后您将了解到memcache,它允许您跳过您已经发现的一些可怕的瓶颈,等等。我所做的是编写许多单元测试,以便您可以测试层

例如,用PHP、Python和C#编写一个SOAP web服务

用相同的语言编写REST web服务(相同的web服务,只有两种访问它们的方法)。这个应该至少能够返回JSON和XML

用C#和Python编写单元测试作为客户机,并用各种结果类型(XML/JSON)测试其余部分。这一点很重要,因为稍后您可能需要测试哪一个是最好的端到端,而JSON可能比XML解析更快(应该是这样)

因此,REST/SOAP服务应该放在同一个控制器上,以简化您的生活

此控制器需要测试,因为您可能需要稍后删除它对测试的影响,但是,您也可以编写测试来查看它进入数据库的速度

除非您想评估各种数据库,否则我将使用一个数据库进行此操作,但对于web测试,只需在第2阶段执行此操作即可。:)

因此,您最终得到的是大量的测试,每个测试都需要能够确定实际运行所需的时间

然后你有很多数字,你可以开始分析,看看什么最适合你

例如,我了解到(几年前我这样做的时候)JSON比XML快,REST比SOAP快

您可能会发现,在某些语言中,有些事情要难做得多,因此在您完成此过程时,请将它们从争用中删除

写测试是容易的部分,从数字中得到有意义的答案将是困难的部分,因为你的偏见可能会影响你的分析,所以要小心


我会用一些真正的应用程序来做这件事,这样工作就不会浪费,只是重复。

我所做的是编写许多单元测试,以便您可以测试层

例如,用PHP、Python和C#编写一个SOAP web服务

用相同的语言编写REST web服务(相同的web服务,只有两种访问它们的方法)。这个应该至少能够返回JSON和XML

用C#和Python编写单元测试作为客户机,并用各种结果类型(XML/JSON)测试其余部分。这一点很重要,因为稍后您可能需要测试哪一个是最好的端到端,而JSON可能比XML解析更快(应该是这样)

因此,REST/SOAP服务应该放在同一个控制器上,以简化您的生活

此控制器需要测试,因为您可能需要稍后删除它对测试的影响,但是,您也可以编写测试来查看它进入数据库的速度

除非您想评估各种数据库,否则我将使用一个数据库进行此操作,但对于web测试,只需在第2阶段执行此操作即可。:)

因此,您最终得到的是大量的测试,每个测试都需要能够确定实际运行所需的时间

然后你有很多数字,你可以开始分析,看看什么最适合你

例如,我了解到(几年前我这样做的时候)JSON比XML快,REST比SOAP快

您可能会发现,在某些语言中,有些事情要难做得多,因此在您完成此过程时,请将它们从争用中删除

写测试是容易的部分,从数字中得到有意义的答案将是困难的部分,因为你的偏见可能会影响你的分析,所以要小心


我会用一些真实的应用程序来实现这一点,这样工作就不会被浪费,只是重复而已。

最好采用现有的基准之一:

但如果你真的需要