我有一个高速ADC数据捕获/分析程序,在旧计算机上表现不佳.当一位测试工程师报告应用程序挂起时,我在客户实验室的beta测试中发现了这一点.事实证明,她的实验室中有一台旧电脑(单核P4),而"挂起"是计算机需要很长时间才能完成一些计算.
我想在启动时计算"计算能力",并警告客户如果计算的功率低于某个截止点,某些功能将非常慢.请注意,CPU速度不是我所追求的(P4运行在2.4 GHz).
我认为如果家庭/型号低于某个截止点,我可以获得CPU系列/型号/步进并显示警告,但我不认为这种方法是可行的,因为P4的系列高于比如i7的家庭.使用表格是因为必须维护表格.
我可以使用基准算法,如whetstone/Dhrystone /等等,但我不想再添加任何时间来启动.
我是否有另一种方法可以在没有花费大量时间的情况下实现这一目标?
TIA
我正在尝试对存储过程进行基准测试.
select benchmark(100000000,(select 1));
Run Code Online (Sandbox Code Playgroud)
这个基准有效
但以下基准不会:
do benchmark(1000,(call test_login_user('a')));
Run Code Online (Sandbox Code Playgroud)
它会产生以下错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'call xpofb_login_user('a')))' at line 1
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?
有谁知道我在哪里可以找到关于人们用两种或更多脚本语言实现的任务的评论或报告,以查看哪种更适合特定的工作?我想知道哪种语言最适合哪种类型的操作,以便我可以充分利用它们.
"操作类型"可以是套接字,文件系统,逻辑评估,正则表达式或绘图.
我最感兴趣的是Python,PHP,Perl和Ruby.
最初,我在ServerFault上发布了这个...但也许它更像是一个PHP语言问题.
我的服务器配备双Xeon四核L5420,运行频率为2.5GHz.我一直在优化我的服务器,并且已经到了我最后的瓶颈:PHP.
我非常简单的PHP脚本:
./test.php
<?php print_r(posix_getpwuid(posix_getuid()));
Run Code Online (Sandbox Code Playgroud)
我不那么科学 - 因为他们不注意线程锁定但科学足够给我一个合理的多线程请求每秒结果脚本:
./benchmark-php
#!/bin/bash
if [ -z $1 ]; then
LIMIT=10
else
LIMIT=$1
fi
if [ -z $2 ]; then
SCRIPT="index.php"
else
SCRIPT=$2
fi
START=$(date +%s.%N)
COUNT=0
while (( $COUNT < $LIMIT ))
do
php $SCRIPT > /dev/null
COUNT=$(echo "$COUNT + 1" | bc)
done
END=$(date +%s.%N)
DIFF=$(echo "$END - $START" | bc)
REQS_PER_SEC=$(echo "scale=2; $COUNT / $DIFF" | bc)
echo $REQS_PER_SEC
Run Code Online (Sandbox Code Playgroud)
./really-benchmark-php
#!/bin/bash
if [ -z $1 ]; then
LIMIT=10 …Run Code Online (Sandbox Code Playgroud) 有没有办法让我获得应用程序所需的内存和处理器能力.当我的一个应用程序一直冻结它正在运行的计算机时,我最近遇到了非常不愉快的经历.这显然与缺乏硬件能力有关,因为它完全适用于我用于测试目的的更强大的计算机,其中应用程序运行良好.所以我的问题是 - 有没有办法计算平稳运行应用程序所需的硬件功率量?几乎所有的应用程序都是用C#完成的,所以我需要一种可以使用这种应用程序的方法.谢谢
我在C#和D中有以下两段代码,目标是在一个简单的循环中比较速度.
d:
import std.stdio;
import std.datetime;
void main() {
StopWatch timer;
long summer = 0;
timer.start();
for (long i = 0; i < 10000000000; i++){
summer++;
}
timer.stop();
long interval_t = timer.peek().msecs;
writeln(interval_t);
}
Run Code Online (Sandbox Code Playgroud)
输出:约30秒
C#:
using System;
using System.Diagnostics;
class Program{
static void Main(){
Stopwatch timer = new Stopwatch();
timer.Start();
long summer = 0;
for(long i = 0; i < 10000000000; i++){
summer++;
}
timer.Stop();
Console.WriteLine(timer.ElapsedMilliseconds);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:大约8秒
为什么C#代码要快得多?
首先,我会对我的所作所为表示不满.
我从这里下载了dhry.h dhry_1.c和dhry_2.c:http://giga.cps.unizar.es/~spd/src/other/dhry/
然后我根据这个做了一些更正(以便我编译):
https://github.com/maximeh/buildroot/blob/master/package/dhrystone/dhrystone-2-HZ.patch
还有这个
我用以下命令行编译了文件:
gcc dhry_1.c dhry_2.c -O2 -o run
我终于输入的运行次数为10亿
等了.我编译了四个不同的优化级别,我得到了DMIPS的这些值(根据http://en.wikipedia.org/wiki/Dhrystone,这是每秒的Dhrystones除以1757):
O0:8112 O1:16823.9 O2:22977.5 O3:23164.5(这些代表编译器标志,如-O2是优化级别2,O0是无).
这将提供以下DMIPS/MHz(我的处理器的基频为3.4 GHz):
2.3859 4.9482 6.7581 6.8131
然而,我得到的感觉6.7是低的方式.根据我所读到的,A15的介于3.5到4 DMIPS/MHz之间,第三代I7只有两倍?它应该不是更高?
任何人都可以告诉我,如果他们可以看到我可能做错了什么吗?或者我可能错误地解释了结果?
我想对一个函数进行基准测试:test()使用不同数量的线程来处理它.
var t1 = time.Now()
test()
var elapsed1 = time.Since(t1)
Run Code Online (Sandbox Code Playgroud)
1 ns /操作
runtime.GOMAXPROCS(1)
var t1 = time.Now()
go test()
var elapsed1 = time.Since(t1)
Run Code Online (Sandbox Code Playgroud)
1.10 ^ -6 ns /操作
func test() {
for i := 0; i < 1000000000; i++ {
float_result = f1 + f2
float_result = f1 - f2
float_result = f1 * f2
float_result = f1 / f2
float_result = f1 + f2
float_result = f1 - f2
float_result = f1 * …Run Code Online (Sandbox Code Playgroud) 考虑这种比较:
require(Rcpp)
require(microbenchmark)
cppFunction('int cppFun (int x) {return x;}')
RFun = function(x) x
x=as.integer(2)
microbenchmark(RFun=RFun(x),cppFun=cppFun(x),times=1e5)
Unit: nanoseconds
expr min lq mean median uq max neval cld
RFun 302 357 470.2047 449 513 110152 1e+06 a
cppFun 2330 2598 4045.0059 2729 2879 68752603 1e+06 b
Run Code Online (Sandbox Code Playgroud)
cppFun似乎慢了RFun.为什么会这样?调用函数的时间有所不同吗?或者是运行时间不同的功能本身?是传递和返回参数的时间吗?是否有一些数据转换或数据复制我不知道何时将数据传递给(或从中返回)cppFun?
我正在尝试测量在Python中运行一组指令所需的时间,但我不想写下这样的内容:
start = time.clock()
...
<lines of code>
...
time_elapsed = time.clock() - start
Run Code Online (Sandbox Code Playgroud)
相反,我想知道是否有一种方法可以将指令块作为参数发送给返回已用时间的函数,如
time_elapsed = time_it_takes(<lines of code>)
Run Code Online (Sandbox Code Playgroud)
这种方法的实现可能是这样的
def time_it_takes(<lines of code>):
start = time.clock()
result = <lines of code>
return (result, time.clock() - start)
Run Code Online (Sandbox Code Playgroud)
有人知道我能否做到这一点?提前致谢.