我正在使用内置的基准测试模块进行一些快速而肮脏的测试.它给了我:
我甚至不知道我需要所有这些信息.
我只是想比较两段代码,看看哪一段需要更长时间.我知道一段代码可能比另一段更多地进行垃圾收集,但我不确定它会产生多大的影响.
我应该关注哪些指标?
而且,最重要的是,有人可以解释为什么"经过的实时"总是比CPU时间长 - 是什么导致两者之间的滞后?
我试图找出最快的方法(在 PHP 5 中)来检查一个值是否是我需要的类型。我创建了两行代码,它们都做同样的事情。问题是我无法根据基准确定哪个最快。
(is_scalar($value) ? intval($value) : 0);
settype($value, 'integer');
Run Code Online (Sandbox Code Playgroud)
我创建了以下测试代码,但除了我自己的 PC(Core2Quad + XP 32 位 + php5.2.5)和一个用于测试它的 Dreamhost 帐户之外,我没有其他任何东西 - 这两个代码显示的时间大致相同。
$array = array(
'false' => FALSE,
'false2'=> 0,
'false3'=> '0',
'false4'=> 'FALSE',
'true' => TRUE,
'true2' => 1,
'true3' => '1',
'true4' => 'TRUE',
'char' => chr(250),
'char2' => chr(10),
'utf' => 0xF0,
'utf1' => 0xFE,
'number' => '452.5435',
'number2' => '-3948.33e2',
'number3' => -343.54,
'number4' => 99.999,
'number5' => '3jk439fjk23945t324098523.349fj324r',
'int' => …Run Code Online (Sandbox Code Playgroud) 我有2张桌子:
拥有 3 百万行的作者。
预订 20 英里的行。
.
所以我用连接对这个查询进行了基准测试:
SELECT BENCHMARK(100000000, 'SELECT book.title, author.name
FROM `book` , `author` WHERE book.id = author.book_id ')
Run Code Online (Sandbox Code Playgroud)
这是结果:
查询耗时 0.7438 秒
使用连接进行 1 亿次查询仅需要 0.7438 秒???
我犯了一些错误还是这是正确的结果?
我正在寻找一个简单的操作/例程,如果连续重复,可以"浪费"时间.
我正在研究如何将gprof配置文件应用程序,因此这个"浪费时间"需要在用户空间中浪费时间,并且不需要外部库.IE,调用sleep(20)将"浪费"20秒的时间,但gprof不会记录这次,因为它发生在另一个库中.
对于可以重复浪费时间的简单任务的任何建议?
比较操作时
var fat_cats = cats.slice()
Run Code Online (Sandbox Code Playgroud)
至
var fat_cats = new Array(cats.length)
Run Code Online (Sandbox Code Playgroud)
性能差异令人困惑.
在firefox和chrome new Array中速度较慢(当它应该更快时,它只是分配一个空数组而不是迭代它)
在IE8 new Array中更快(这只是令人困惑)
任何解释都赞赏.
我是D的新手,我在简单测试中将它与Java进行比较,并希望看到母语更快(或大致相同).但是在我第一次使用递归D的测试中,它比Java慢得多(差不多两次).
Java(这是糟糕的java性能测试,但它只是简单的想法):
public static void main(String... args) {
long before = System.nanoTime();
System.out.println(fibonacci(40));
System.out.println(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - before));
}
static int fibonacci(int n) {
if (n < 2) {
return n;
}
return fibonacci(n - 2) + fibonacci(n - 1);
}
Run Code Online (Sandbox Code Playgroud)
环境:Win7 64bit,JDK:1.7.0_10 x64.
d:
import std.stdio;
import std.datetime;
void main(string[] args)
{
auto r = benchmark!(simplebench)(1);
writefln("%s", r[0].to!("msecs", int));
}
void simplebench() {
writeln(fibonacci(40));
}
int fibonacci(int n) {
if (n < 2) {
return n;
}
return fibonacci(n - 2) …Run Code Online (Sandbox Code Playgroud) 我想测量,2个不同的程序需要多长时间才能执行1个任务.一个程序使用线程,另一个没有.任务是计数高达2000000.
带线程的类:
public class Main {
private int res1 = 0;
private int res2 = 0;
public static void main(String[] args) {
Main m = new Main();
long startTime = System.nanoTime();
m.func();
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.println("duration: " + duration);
}
public void func() {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 1000000; i++) {
res1++;
}
}
});
Thread t2 …Run Code Online (Sandbox Code Playgroud) 我正在使用Scala 2.10.3运行此程序:
object Test {
def main(args: Array[String]) {
def factorial(x: BigInt): BigInt =
if (x == 0) 1 else x * factorial(x - 1)
val N = 1000
val t = new Array[Long](N)
var r: BigInt = 0
for (i <- 0 until N) {
val t0 = System.nanoTime()
r = r + factorial(300)
t(i) = System.nanoTime()-t0
}
val ts = t.sortWith((x, y) => x < y)
for (i <- 0 to 10)
print(ts(i) + " ")
println("*** " …Run Code Online (Sandbox Code Playgroud) 解决了最近出现的代码问题,我发现我的默认Python比PyPy慢约40倍.通过在函数中运行限制调用和限制全局查找,我能够通过此代码将其降低到大约17倍len.
现在,e.py在python 3.6.3上运行5.162秒,在我的机器上在PyPy上运行.297秒.
我的问题是:这是JIT的不可缩短的加速,还是有某种方法可以加速CPython的回答?(没有极端的意思:我可以去Cython/Numba或其他什么?)我如何说服自己,我无能为力?
请参阅gist以获取数字输入文件列表.
如问题陈述中所述,它们代表跳跃偏移.position += offsets[current],并将当前偏移量增加1.当跳转将您带到列表外时,您就完成了.
这是给出的示例(需要5秒的完整输入更长,并且具有更大的数字):
(0) 3 0 1 -3 - before we have taken any steps.
(1) 3 0 1 -3 - jump with offset 0 (that is, don't jump at all). Fortunately, the instruction is then incremented to 1.
2 (3) 0 1 -3 - step forward because of the instruction we just modified. The first instruction is incremented again, …Run Code Online (Sandbox Code Playgroud) 所以,我在我接下来的一段代码Main()方法
for (int x = 0; x < 100; x++) // to mimic BenchmarkDotnet runs
for (int y = 0; y < 10000; y++)
LogicUnderTest();
Run Code Online (Sandbox Code Playgroud)
接下来,我正在测试以下课程
[MemoryDiagnoser, ShortRunJob]
public class TestBenchmark
{
[Benchmark]
public void Test_1()
{
for (int i = 0; i < 10000; i++)
LogicUnderTest();
}
}
Run Code Online (Sandbox Code Playgroud)
运行后Main()下dotMemory了6分钟左右,我收到下面的结果
该应用程序从开始10Mb到14Mb。
我看到我已经2.6GB分配了。什么?似乎一点也不好。另外,我看不到Gen1和Gen2列。这是否意味着代码没有在其中分配任何内容,所以没有任何显示?
如何解释结果?看起来完全可以DotMemory,但不能接受BenchmarkDotNet。我是新手,BenchmarkDotnet将对有关结果的任何信息有所帮助。
PS。LogicUnderTest() …