下面的代码检查x和y是不同的值(变量x,y,z只能有值a,b或c),并且如果是这样,设置z于第三字符:
if x == 'a' and y == 'b' or x == 'b' and y == 'a':
z = 'c'
elif x == 'b' and y == 'c' or x == 'c' and y == 'b':
z = 'a'
elif x == 'a' and y == 'c' or x == 'c' and y == 'a':
z = 'b'
Run Code Online (Sandbox Code Playgroud)
有可能以更简洁,可读和有效的方式做到这一点吗?
有没有人使用秒表基准测试,还是应该总是使用性能工具?有没有适合Java的免费工具?你用什么工具?
为了澄清我的担忧,由于操作系统调度,秒表基准测试会出错.在程序的给定运行中,操作系统可能会在您正在计时的函数中间安排另一个(或多个)进程.在Java中,如果你试图为一个线程化的应用程序计时,事情会更糟糕,因为JVM调度程序会在混合中引入更多的随机性.
基准测试时如何解决操作系统调度问题?
前几天我做了一些Python基准测试,我发现了一些有趣的东西.下面是两个或多或少相同的循环.循环1大约需要循环2执行的两倍.
循环1:
int i = 0
while i < 100000000:
i += 1
Run Code Online (Sandbox Code Playgroud)
循环2:
for n in range(0,100000000):
pass
Run Code Online (Sandbox Code Playgroud)
为什么第一个循环这么慢?我知道这是一个微不足道的例子,但它引起了我的兴趣.range()函数有什么特别之处,它比以相同方式递增变量更有效吗?
我正在努力使用timeit并且想知道是否有人有任何提示
基本上我有一个函数(我传递一个值),我想测试速度并创建它:
if __name__=='__main__':
from timeit import Timer
t = Timer(superMegaIntenseFunction(10))
print t.timeit(number=1)
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我得到了来自timeit模块的奇怪错误:
ValueError: stmt is neither a string nor callable
Run Code Online (Sandbox Code Playgroud)
如果我自己运行该功能,它可以正常工作.当我在模块中包装它时,我得到了错误(我尝试使用双引号而没有..sameoutput).
任何建议都会很棒!
谢谢!
通常我使用shell命令time.我的目的是测试数据是小型,中型,大型还是非常大的集合,多少时间和内存使用量.
用于linux或python的任何工具都可以做到这一点?
考虑:
#include <time.h>
#include <unistd.h>
#include <iostream>
using namespace std;
const int times = 1000;
const int N = 100000;
void run() {
for (int j = 0; j < N; j++) {
}
}
int main() {
clock_t main_start = clock();
for (int i = 0; i < times; i++) {
clock_t start = clock();
run();
cout << "cost: " << (clock() - start) / 1000.0 << " ms." << endl;
//usleep(1000);
}
cout << "total cost: " << …Run Code Online (Sandbox Code Playgroud) 我正在寻找一些大型公共数据集,特别是:
已匿名化的大型示例Web服务器日志.
用于数据库性能基准测试的数据集.
任何其他指向大型公共数据集的链接都将受到赞赏.我已经了解亚马逊的公共数据集:http: //aws.amazon.com/publicdatasets/
我一直在寻找之间的性能基准测试Contains,Exists以及Any方法可用List<T>.我只想出于好奇而发现这一点,因为我总是在这些中感到困惑.关于SO的许多问题描述了这些方法的定义,例如:
所以我决定自己做.我将其添加为答案.对结果有任何更多见解是最受欢迎的.我还对数组进行了基准测试以查看结果
我听说过这个术语,但我不完全确定它是什么意思,所以:
有两种方法可以将整数/浮点数组清零:
memset(array, 0, sizeof(int)*arraysize);
Run Code Online (Sandbox Code Playgroud)
要么:
for (int i=0; i <arraysize; ++i)
array[i]=0;
Run Code Online (Sandbox Code Playgroud)
显然,memset对于大型更快arraysize.但是,在什么时候memset的开销实际上大于for循环的开销?例如,对于大小为5的数组 - 哪个最好?第一个,第二个,甚至可能是未滚动的版本:
array[0] = 0;
array[1] = 0;
array[2] = 0;
array[3] = 0;
array[4] = 0;
Run Code Online (Sandbox Code Playgroud) benchmarking ×10
performance ×6
python ×4
java ×2
c ×1
c# ×1
c++ ×1
database ×1
dataset ×1
debugging ×1
jit ×1
linux ×1
optimization ×1
shell ×1
unix ×1