同样的算法,同样的数据....在我的电脑上java耗时4秒左右,c++耗时15秒左右......贴上代码...大家分析下...理论上不应该有这么大差距的啊....彻底凌乱了....
更新:是编译设置的时候debug和release的原因,用release c++运行3秒左右.....话说我以前一直不知道release和debug还有执行效率的区别.....
更新:看了新的评论又凌乱了.....java开了-server我的还是4秒左右.....
c++的代码
01 | #include <iostream> |
02 | #include <ctime> |
03 | using namespace std; |
04 | |
05 | class Work { |
06 | private : |
07 | char a,b; |
08 | inline void set( int aa, int bb) { |
09 | a=aa; |
10 | b=bb; |
11 | } |
12 | inline void put( char c) { |
13 | a = b; |
14 | b = c; |
15 | } |
16 | inline int get() { |
17 | return a + b - 96; |
18 | } |
19 | public : |
20 | inline char result( char aa, char bb, int n) { |
21 | set(aa, bb); |
22 | int temp = 0; |
23 | for ( int i = n; i > 2; i--) { |
24 | temp = get(); |
25 | if (temp > 9) { |
26 | put(( char ) (temp / 10 + 48)); |
27 | i--; |
28 | if (i == 2) |
29 | break ; |
30 | put(( char ) (temp % 10 + 48)); |
31 | } else { |
32 | put(( char ) (temp + 48)); |
33 | } |
34 | } |
35 | return b; |
36 | } |
37 | }; |
38 | |
39 | int main() { |
40 | time_t old_time; |
41 | Work work; |
42 | old_time = time (NULL); |
43 | char result=work.result( '1' , '4' ,999999999); |
44 | int all_time= time (NULL)-old_time; |
45 | cout<< "结果为:" <<result<< " 耗时:" <<all_time<< "秒" <<endl; |
46 | return 0; |
47 | } |
[代码] java的代码
01 | package test; |
02 | |
03 | public class Main { |
04 | public static void main(String[] args) { |
05 | Work work = new Work(); |
06 | long oldTime = System.currentTimeMillis(); |
07 | char result=work.result( '1' , '4' , 999999999 ); |
08 | long time = System.currentTimeMillis() - oldTime; |
09 | System.out.println( "结果为:" +result+ " 耗时:" +time + "毫秒" ); |
10 | } |
11 | } |
12 | |
13 | class Work { |
14 | private char a, b; |
15 | private void set( char a, char b) { |
16 | this .a = a; |
17 | this .b = b; |
18 | } |
19 | private void put( char c) { |
20 | a = b; |
21 | b = c; |
22 | } |
23 | private int get() { |
24 | return a + b - 96 ; |
25 | } |
26 | public char result( char a, char b, int n) { |
27 | this .set(a, b); |
28 | int temp = 0 ; |
29 | for ( int i = n; i > 2 ; i--) { |
30 | temp = this .get(); |
31 | if (temp > 9 ) { |
32 | this .put(( char ) (temp / 10 + 48 )); |
33 | i--; |
34 | if (i == 2 ) |
35 | break ; |
36 | this .put(( char ) (temp % 10 + 48 )); |
37 | } else { |
38 | this .put(( char ) (temp + 48 )); |
39 | } |
40 | } |
41 | return this .b; |
42 | } |
43 | } |
[图片] 未命名.jpg
[图片] 未命名.jpg
转载:开源中国