- 浏览: 3048087 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
CSDN的blog上有这么一篇:java,javascript,groovy和Rhino 的运行效率到底相差的有多远?
那篇文章是2005年7月的,读了之后觉得想看看现在的状况如何,于是也稍微测了下。
代码基本上是从那篇文章直接搬过来的,每个实现测8次。注意到测试所计算的时间只包括计算10皇后问题的时间,而没有包括程序的启动时间和输出时间等。在实际应用中,启动时间会对用户体验带来很大的影响,而输入输出实际上也是相当消耗时间的工作。
而且测试也没有测memory footprint << 这玩意对实际表现也有很大影响
我的测试环境:
HP Compaq nx9040, Pentium M 715, 1.5GHz
Windows XP SP2 5.1.2600
应该说我这笔记本在2005年也不算快,到现在已经算是老爷机了。但那篇文章里所提到的几种实现在我的机器上做出的表现比文章所描述的都要快多了。特别是Groovy,在采用了类似JRuby的一些优化手段之后,性能一下就提高了很多。Charles Nutter之前在他的blog上也提到了这点。
下面测到的脚本语言的实现基本上都在2-6秒左右完成了10皇后的计算,应该说在这个测试所做的计算中性能都差不多。
其实现在这些脚本语言也就比Java或者C#慢个100x左右……做一般的任务绝对够用了 =_=
关于性能测试:
这种10皇后问题的程序也算是所谓“microbenchmark”了吧。要注意:由于计算量/数据量不够大,持续时间不够长,有很多问题(也可以说是优化的机会)是看不到的。所以不要太在意这种microbenchmark的具体数据。大概有个数量级就差不多了。
C:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86
/O2
Java:
Java 1.6.0 update 5 Client VM:
C#
.NET Framework 3.5
/o
JavaScript:
Rhino 1.7R1:
Ruby:
Ruby 1.8.6-p111:
JRuby 1.1.2:
Ruby 1.9.0-0
IronRuby暂时还运行不了这段代码。即便将Benchmark相关的部分替换成Time.now,IronyRuby的可执行程序(ir.exe)仍然无法正常执行这段代码,比较郁闷。可能把全局变量转成局部变量会好些。
Groovy:
Groovy 1.6 Beta 1
Groovy 1.6 Beta 1 compiled to Java 1.6.0 update 5
那篇文章是2005年7月的,读了之后觉得想看看现在的状况如何,于是也稍微测了下。
代码基本上是从那篇文章直接搬过来的,每个实现测8次。注意到测试所计算的时间只包括计算10皇后问题的时间,而没有包括程序的启动时间和输出时间等。在实际应用中,启动时间会对用户体验带来很大的影响,而输入输出实际上也是相当消耗时间的工作。
而且测试也没有测memory footprint << 这玩意对实际表现也有很大影响
我的测试环境:
HP Compaq nx9040, Pentium M 715, 1.5GHz
Windows XP SP2 5.1.2600
应该说我这笔记本在2005年也不算快,到现在已经算是老爷机了。但那篇文章里所提到的几种实现在我的机器上做出的表现比文章所描述的都要快多了。特别是Groovy,在采用了类似JRuby的一些优化手段之后,性能一下就提高了很多。Charles Nutter之前在他的blog上也提到了这点。
下面测到的脚本语言的实现基本上都在2-6秒左右完成了10皇后的计算,应该说在这个测试所做的计算中性能都差不多。
其实现在这些脚本语言也就比Java或者C#慢个100x左右……做一般的任务绝对够用了 =_=
关于性能测试:
这种10皇后问题的程序也算是所谓“microbenchmark”了吧。要注意:由于计算量/数据量不够大,持续时间不够长,有很多问题(也可以说是优化的机会)是看不到的。所以不要太在意这种microbenchmark的具体数据。大概有个数量级就差不多了。
C:
#include <stdio.h> #include <time.h> #define TRUE 1 #define FALSE 0 #define q 10 const int CLOCKS_PER_MS = CLOCKS_PER_SEC / 1000; int i[q]; int count = 0; int check(int n) { int j; for(j = 0; j < n; ++j) if (i[j] == i[n] || i[j] - i[n] == j - n || i[j] - i[n] == n - j ) return FALSE; return TRUE; } void scan(int n) { if (n == q) { // for (int k=0;k<q;k++) System.out.print(i[k]+(k==q-1?"\n":",")); count++; return; } i[n] = 0; while(i[n] < q) { i[n] = i[n] + 1; if (check(n)) scan(n + 1); } } int main() { clock_t t = clock(); scan(0); printf("total time: %d\n", (clock() - t) / CLOCKS_PER_MS); printf("total results: %d\n", count); return 0; }
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86
/O2
引用
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
D:\test>queen
total time: 40
total results: 724
Java:
public class Queens { static int q = 10; static int[] i = new int[q]; static int count = 0; public static void main(String[] args) { long t = System.currentTimeMillis(); scan(0); System.out.println("total time: " + (System.currentTimeMillis()-t)); System.out.println("total results: " + count); } private static void scan(int n) { if (n == q) { // for (int k=0;k<q;k++) System.out.print(i[k]+(k==q-1?"\n":",")); count++; return; } i[n] = 0; while(i[n] < q) { i[n] = i[n] + 1; if (check(n)) scan(n + 1); } } private static boolean check(int n) { for( int j = 0; j < n; ++j) if (i[j] == i[n] || i[j] - i[n] == j - n || i[j] - i[n] == n - j ) return false; return true; } }
Java 1.6.0 update 5 Client VM:
引用
D:\test>java Queens
total time: 31
total results: 724
D:\test>java Queens
total time: 50
total results: 724
D:\test>java Queens
total time: 40
total results: 724
D:\test>java Queens
total time: 20
total results: 724
D:\test>java Queens
total time: 30
total results: 724
D:\test>java Queens
total time: 30
total results: 724
D:\test>java Queens
total time: 20
total results: 724
D:\test>java Queens
total time: 30
total results: 724
total time: 31
total results: 724
D:\test>java Queens
total time: 50
total results: 724
D:\test>java Queens
total time: 40
total results: 724
D:\test>java Queens
total time: 20
total results: 724
D:\test>java Queens
total time: 30
total results: 724
D:\test>java Queens
total time: 30
total results: 724
D:\test>java Queens
total time: 20
total results: 724
D:\test>java Queens
total time: 30
total results: 724
C#
using System; sealed class Queens { const int q = 10; static int[ ] i = new int[ q ]; static int count = 0; static void Main( string[ ] args ) { int t = DateTime.Now.Millisecond; Scan(0); Console.WriteLine( "total time: {0}", ( DateTime.Now.Millisecond - t) ); Console.WriteLine( "total results: {0}", count ); } private static void Scan( int n ) { if ( n == q ) { // for (int k=0;k<q;k++) Console.WriteLine(i[k]+(k==q-1?"\n":",")); count++; return; } i[ n ] = 0; while( i[ n ] < q ) { i[ n ] = i[ n ] + 1; if ( Check( n ) ) Scan( n + 1 ); } } private static bool Check( int n ) { for( int j = 0; j < n; ++j) if ( i[ j ] == i[ n ] || i[ j ] - i[ n ] == j - n || i[ j ] - i[ n ] == n - j ) return false; return true; } }
.NET Framework 3.5
/o
引用
D:\test>Queens
total time: 20
total results: 724
D:\test>Queens
total time: 50
total results: 724
D:\test>Queens
total time: 20
total results: 724
D:\test>Queens
total time: 50
total results: 724
D:\test>Queens
total time: 31
total results: 724
D:\test>Queens
total time: 60
total results: 724
D:\test>Queens
total time: 20
total results: 724
D:\test>Queens
total time: 50
total results: 724
total time: 20
total results: 724
D:\test>Queens
total time: 50
total results: 724
D:\test>Queens
total time: 20
total results: 724
D:\test>Queens
total time: 50
total results: 724
D:\test>Queens
total time: 31
total results: 724
D:\test>Queens
total time: 60
total results: 724
D:\test>Queens
total time: 20
total results: 724
D:\test>Queens
total time: 50
total results: 724
JavaScript:
var q = 10 var i = new Array(q) var count = 0 var d = new Date(); scan(0) d = new Date() - d; print("total results: " + count) print("time used: " + d) function scan(n) { if (n==q){ // print(i) ++count return } i[n] = 0 while (i[n] < q) { i[n] = i[n] + 1 if (check(n)) scan(n+1) } } function check(n) { for (var j=0; j<n;j++) if (i[j] == i[n] || i[j] - i[n] == j - n || i[j] - i[n] == n - j) return false return true }
Rhino 1.7R1:
引用
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2574
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2563
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2554
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2554
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2553
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2563
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2564
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2564
total results: 724
time used: 2574
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2563
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2554
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2554
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2553
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2563
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2564
C:\sdk\rhino1_7R1>java -jar js.jar -f queen.js
total results: 724
time used: 2564
Ruby:
require 'benchmark' $q = 10 $arr = Array.new $q, 0 $count = 0 def check(n) n.times do |i| if $arr[i] == $arr[n] || $arr[i] - $arr[n] == i - n || $arr[i] - $arr[n] == n - i return false end end true end def scan(n) if n == $q # puts $arr $count += 1 return end $arr[n] = 0 while $arr[n] < $q $arr[n] += 1 scan n + 1 if check n end end puts Benchmark.measure { scan 0 } puts "total count: #{$count}"
Ruby 1.8.6-p111:
引用
D:\>ruby queen.rb
6.459000 0.000000 6.459000 ( 6.479000)
total count: 724
D:\>ruby queen.rb
6.469000 0.000000 6.469000 ( 6.480000)
total count: 724
D:\>ruby queen.rb
6.479000 0.000000 6.479000 ( 6.489000)
total count: 724
D:\>ruby queen.rb
6.479000 0.000000 6.479000 ( 6.489000)
total count: 724
D:\>ruby queen.rb
6.469000 0.000000 6.469000 ( 6.479000)
total count: 724
D:\>ruby queen.rb
6.459000 0.000000 6.459000 ( 6.490000)
total count: 724
D:\>ruby queen.rb
6.459000 0.000000 6.459000 ( 6.459000)
total count: 724
D:\>ruby queen.rb
6.469000 0.000000 6.469000 ( 6.489000)
total count: 724
6.459000 0.000000 6.459000 ( 6.479000)
total count: 724
D:\>ruby queen.rb
6.469000 0.000000 6.469000 ( 6.480000)
total count: 724
D:\>ruby queen.rb
6.479000 0.000000 6.479000 ( 6.489000)
total count: 724
D:\>ruby queen.rb
6.479000 0.000000 6.479000 ( 6.489000)
total count: 724
D:\>ruby queen.rb
6.469000 0.000000 6.469000 ( 6.479000)
total count: 724
D:\>ruby queen.rb
6.459000 0.000000 6.459000 ( 6.490000)
total count: 724
D:\>ruby queen.rb
6.459000 0.000000 6.459000 ( 6.459000)
total count: 724
D:\>ruby queen.rb
6.469000 0.000000 6.469000 ( 6.489000)
total count: 724
JRuby 1.1.2:
引用
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.986000 0.000000 3.986000 ( 3.989929)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.996000 0.000000 3.996000 ( 3.996371)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
4.016000 0.000000 4.016000 ( 4.022501)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.966000 0.000000 3.966000 ( 3.969034)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.956000 0.000000 3.956000 ( 3.959475)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.986000 0.000000 3.986000 ( 3.985322)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.975000 0.000000 3.975000 ( 3.981439)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.966000 0.000000 3.966000 ( 3.962475)
total count: 724
3.986000 0.000000 3.986000 ( 3.989929)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.996000 0.000000 3.996000 ( 3.996371)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
4.016000 0.000000 4.016000 ( 4.022501)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.966000 0.000000 3.966000 ( 3.969034)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.956000 0.000000 3.956000 ( 3.959475)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.986000 0.000000 3.986000 ( 3.985322)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.975000 0.000000 3.975000 ( 3.981439)
total count: 724
C:\sdk\jruby-1.1.2\bin>jruby queen.rb
3.966000 0.000000 3.966000 ( 3.962475)
total count: 724
Ruby 1.9.0-0
引用
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.784000 0.000000 2.784000 ( 2.794000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.714000 0.010000 2.724000 ( 2.724000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.794000 0.000000 2.794000 ( 2.794000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.744000 0.000000 2.744000 ( 2.754000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.693000 0.000000 2.693000 ( 2.704000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.744000 0.000000 2.744000 ( 2.754000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.744000 0.000000 2.744000 ( 2.754000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.744000 0.000000 2.744000 ( 2.744000)
total count: 724
2.784000 0.000000 2.784000 ( 2.794000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.714000 0.010000 2.724000 ( 2.724000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.794000 0.000000 2.794000 ( 2.794000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.744000 0.000000 2.744000 ( 2.754000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.693000 0.000000 2.693000 ( 2.704000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.744000 0.000000 2.744000 ( 2.754000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.744000 0.000000 2.744000 ( 2.754000)
total count: 724
D:\ruby-1.9.0-0-i386-mswin32\bin>ruby queen.rb
2.744000 0.000000 2.744000 ( 2.744000)
total count: 724
IronRuby暂时还运行不了这段代码。即便将Benchmark相关的部分替换成Time.now,IronyRuby的可执行程序(ir.exe)仍然无法正常执行这段代码,比较郁闷。可能把全局变量转成局部变量会好些。
Groovy:
D:\groovy-1.6-beta-1\bin>groovy queen.groovy total time: 1793 total results: 724 D:\groovy-1.6-beta-1\bin>groovy queen.groovy total time: 1793 total results: 724 D:\groovy-1.6-beta-1\bin>groovy queen.groovy total time: 1813 total results: 724 D:\groovy-1.6-beta-1\bin>groovy queen.groovy total time: 1803 total results: 724 D:\groovy-1.6-beta-1\bin>groovy queen.groovy total time: 1792 total results: 724 D:\groovy-1.6-beta-1\bin>groovy queen.groovy total time: 1803 total results: 724 D:\groovy-1.6-beta-1\bin>groovy queen.groovy total time: 1792 total results: 724 D:\groovy-1.6-beta-1\bin>groovy queen.groovy total time: 1802 total results: 724
Groovy 1.6 Beta 1
引用
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1793
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1793
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1813
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1803
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1792
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1803
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1792
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1802
total results: 724
total time: 1793
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1793
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1813
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1803
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1792
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1803
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1792
total results: 724
D:\groovy-1.6-beta-1\bin>groovy queen.groovy
total time: 1802
total results: 724
Groovy 1.6 Beta 1 compiled to Java 1.6.0 update 5
引用
D:\groovy-1.6-beta-1\bin>groovyc queen.groovy
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1833
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1762
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1783
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1763
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1762
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1773
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1762
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1773
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1833
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1762
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1783
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1763
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1762
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1773
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1762
total results: 724
D:\groovy-1.6-beta-1\bin>java -cp ./groovy-all-1.6-beta-1.jar;. queen
total time: 1773
total results: 724
发表评论
-
Sun JDK1.4.2_28有TieredCompilation
2014-05-12 08:48 0原来以前Sun的JDK 1.4.2 update 28就已经有 ... -
IBM JVM notes (2014 ver)
2014-05-11 07:16 0Sovereign JIT http://publib.bou ... -
Java 8的lambda表达式在OpenJDK8中的实现
2014-02-04 12:08 0三月份JDK8就要发布首发了,现在JDK8 release c ... -
基于LLVM实现VM的JIT的一些痛点
2014-01-07 17:25 0同事Philip Reames Sanjoy Das http ... -
tailcall notes
2013-12-27 07:42 0http://blogs.msdn.com/b/clrcode ... -
《自制编程语言》的一些笔记
2013-11-24 00:20 0http://kmaebashi.com/programmer ... -
字符串的一般封装方式的内存布局 (1): 元数据与字符串内容,整体还是分离?
2013-11-07 17:44 22390(Disclaimer:未经许可请 ... -
字符串的一般封装方式的内存布局 (0): 拿在手上的是什么
2013-11-04 18:22 21489(Disclaimer:未经许可请 ... -
字符串的一般封装方式的内存布局
2013-11-01 12:55 0(Disclaimer:未经许可请 ... -
关于string,内存布局,C++ std::string,CoW
2013-10-30 20:45 0(Disclaimer:未经许可请 ... -
Function.prototype.bind
2013-09-24 18:07 0polyfill http://stackoverflow. ... -
Java的instanceof是如何实现的
2013-09-22 16:57 0Java语言规范,Java SE 7版 http://docs ... -
struct做参数不能从寄存器传?
2013-08-28 23:33 0test test test struct Foo { i ... -
也谈类型: 数据, 类型, 标签
2013-08-18 01:59 0numeric tower http://en.wikiped ... -
SDCC 2012上做的JVM分享
2012-10-17 16:35 32648刚把在SDCC 2012做的JVM分享的演示稿上传了。 演示 ... -
运行时支持系统的“重量”
2012-10-12 16:08 0运行时支持系统的“重量” 好久没写博客了,可写的话题已经堆积 ... -
class?metaclass?meta-what?
2011-04-05 19:43 0http://en.wikipedia.org/wiki/Me ... -
“代码模式”与抽象
2010-10-28 15:21 0嗯,我是说“代码模式”,不是“设计模式”;这里指的是在给定的场 ... -
lvalue与rvalue
2010-09-03 00:40 0http://en.wikipedia.org/wiki/Va ... -
动态链接的“依据”
2010-02-09 09:54 0动态链接,意味着在生成的“东西”里留有符号信息,等到运行时再r ...
相关推荐
通过链接到Jacky-Dai在iteye博客上的一篇文章(https://jacky-dai.iteye.com/blog/2382448),我们可以获取更多关于此话题的专业见解。标签“源码”和“工具”提示我们,本文可能涉及测试过程中的代码审查和自动化...
在这篇文章中,我们将深入探讨这两种测试方法的定义、目的以及如何在实际工作中有效地运用它们。 首先,回归测试是一种确保软件修改后仍能正常运行的测试方法。当开发者对代码进行更新、修复或优化时,可能会无意中...
综上所述,小程序作为一种新兴的轻量级应用形态,在降低成本、提高效率等方面展现出巨大优势。无论是对于创业者还是成熟企业,小程序都成为了不可忽视的重要工具。随着技术的进步和市场需求的变化,小程序的应用场景...
本篇文章将深入探讨一种先进的Java代码测试方案——Gemini测试,它为开发者提供了全面而高效的测试工具和方法。 Gemini测试方案是针对Java应用的一种自动化测试框架,旨在提高测试覆盖率和效率。其核心理念是将单元...
本篇文章将深入探讨几种主要的测试工具,包括白盒测试工具集、黑盒功能测试工具集、黑盒性能测试工具集以及测试管理工具,并进行产品之间的比较。 首先,我们来看Parasoft的白盒测试工具集。Parasoft提供了多种针对...
本篇文章将深入探讨“虚拟机安装测试工具”以及如何测试CPU是否支持虚拟化。 首先,我们要理解什么是虚拟化。虚拟化是一种资源管理技术,它通过软件模拟硬件,使多操作系统能够在同一台机器上并发运行,互不影响。...
本篇文章将介绍两款著名的测试工具——Visual Unit和Apache JMeter,以及一款测试管理工具TestDirector,它们分别在单元测试、性能测试和测试管理方面提供专业支持。 Visual Unit是一款专为C/C++开发的单元测试工具...
从标签“源码 工具”来看,本文可能会深入到Junit的源码层面,探讨其内部工作机制,并可能介绍一些用于自动化测试代码生成的工具或者自定义工具的实现。源码分析对于理解Junit如何支持测试驱动开发(TDD)和行为驱动...
这是一个典型的数学问题,需要开发者不仅能够编写正确的代码,还要考虑代码的效率,尤其是在嵌入式系统开发中,程序运行速度至关重要。 2. **初始解决方案** 开始时,作者采用了一个简单的循环,逐个累加数字并...
本篇文章将详细介绍一个由个人开发的分词系统测试程序,以及其运行环境和主要组件。 首先,我们来看标题中的“分词系统测试程序”。这通常是一个专门用于验证和评估分词算法或工具的软件工具。它可以帮助开发者检查...
本篇文章将深入探讨proxy和Mycat的对比测试,以及如何在MySQL主从架构中进行测试。 首先,我们来看proxy。Proxy通常指的是数据库代理服务器,它位于应用服务器和数据库服务器之间,起到路由请求、负载均衡和透明化...
借助CUDA,开发者可以充分利用GPU的成千上万个小核心来并行处理复杂计算任务,相比传统CPU,这能够极大提升程序的运行效率。 在本篇文章《基于CUDA的矩阵乘法和FFT性能测试》中,作者肖江、胡柯良、邓元勇等人在...
从标签来看,这是一篇聚焦于硬件技术、硬件开发领域的专业文献。标签中的“参考文献”和“专业指导”表明这是一篇理论联系实际的研究成果,既提供了在特定领域中的应用案例,也能够为后续的研究或开发工作提供指导和...
描述中的链接指向了一篇博客文章,虽然具体内容无法在这里直接引用,但通常这样的文章会讨论如何在C++环境中实施TDD,包括使用相关的测试框架和工具,以及如何构建和运行测试。 标签 "源码" 和 "工具" 暗示了讨论...
分布式能源测试系统是一种基于计算机技术和现代通信技术的新型能源系统,它能够实现能源的有效分配、利用和管理,以提高能源利用效率和环境保护为目标。在当今世界能源日益紧张和环境保护需求不断提高的背景下,...
总的来说,这篇关于“Software Test”的博客可能涵盖了从代码级测试策略、自动化工具的应用,到特定场景(如Cisco网络设备)的测试实践,以及如何适应敏捷和DevOps环境。通过深入学习这些内容,读者可以提升自己的...
这篇文章正是为了挑战这一观点,通过深入分析PHP的源码、应用场景、基准性能以及与其他语言的对比,来揭示PHP的真实性能表现。 首先,从内存管理的角度来看,PHP借鉴了Nginx的内存管理策略,采用内存池机制并引入了...
本篇文章将重点探讨在C#中处理Oracle游标的性能测试。 游标,或者说光标,是数据库管理系统提供的一种数据处理机制,允许程序逐行地读取、处理和修改查询结果。在Oracle数据库中,游标通常用于循环处理大量数据,...
性能测试还需要做Soak Test,也就是在某个吞吐量下,系统可以持续跑一周甚至更长。这个值,我们叫做系统的正常运行的负载极限。性能测试有很多很重要的东西,比如:burst test等。 三、定位性能瓶颈 到了这里,...