Today, you should test the implementation of C # and Java's agreed code functionality for work problems and find a problem.
Compared to the Hashset.contains method, the performance in Java is not as high as C #.
1 Private Static FinalLogger log = Logger.getlogger (Newclass.class);2 3 Public Static voidMain (string[] args) {4 for(intj = 0; J < 5; J + +) {5hashset<integer> ids =NewHashset<> (0);6Log.error ("Start test:" +j);7 intForcount = 200 * 10000;8 for(inti = 0; i < Forcount; i++) {9 if(!ids.contains (i)) {Ten Ids.add (i); One } A } -Log.error ("End test:" + j + "execution count:" +forcount); - } the}
[04-12 16:16:57:427], start test: 0
[04-12 16:16:58:063], end test: 0 execution times: 2000000
[04-12 16:16:58:064], start test: 1
[04-12 16:16:58:835], end test: 1 execution times: 2000000
[04-12 16:16:58:835], start test: 2
[04-12 16:16:58:993], end test: 2 execution times: 2000000
[04-12 16:16:58:994], start test: 3
[04-12 16:16:59:247], end test: 3 execution times: 2000000
[04-12 16:16:59:249], start test: 4
[04-12 16:16:59:382], end test: 4 execution times: 2000000
See Java Run results performed 2 million retrieval inserts, execution time of more than 100 milliseconds, approximately.
1 Private Static FinalLogger log = Logger.getlogger (Newclass.class);2 3 Public Static voidMain (string[] args) {4 for(intj = 0; J < 5; J + +) {5hashset<integer> ids =NewHashset<> (0);6Log.error ("Start test:" +j);7 intForcount = 2000 * 10000;8 for(inti = 0; i < Forcount; i++) {9 if(!ids.contains (i)) {Ten Ids.add (i); One } A } -Log.error ("End test:" + j + "execution count:" +forcount); - } the}
[04-12 16:18:09:345], start test: 0
[04-12 16:18:24:835], end test: 0 execution times: 20000000
[04-12 16:18:24:836], start test: 1
[04-12 16:18:36:600], end test: 1 execution times: 20000000
[04-12 16:18:36:600], start test: 2
[04-12 16:18:44:331], end test: 2 execution times: 20000000
[04-12 16:18:44:331], start test: 3
[04-12 16:18:51:801], end test: 3 execution times: 20000000
[04-12 16:18:51:803], start test: 4
[04-12 16:19:01:277], end test: 4 execution times: 20000000
While performing 2000 to complete the retrieval, the average execution time is about 9 seconds.
Now let's look at the results of C # operation
1 Static voidMain (string[] args)2 {3 for(intj =0; J <5; J + +)4 {5hashset<int> ids =Newhashset<int>();6Console.WriteLine (DateTime.Now.NowString () +"To start the test:"+j);7 intForcount = $*10000;8 for(inti =0; i < Forcount; i++)9 {Ten if(!IDs. Contains (i)) One { A IDs. ADD (i); - } - } theConsole.WriteLine (DateTime.Now.NowString () +"End test:"+ j +"number of executions:"+forcount); - } - console.readline (); -}
2015-04-12 16:20:06:223: Start test: 0
2015-04-12 16:20:06:321: End test: 0 execution times: 2000000
2015-04-12 16:20:06:322: Start test: 1
2015-04-12 16:20:06:413: End test: 1 execution times: 2000000
2015-04-12 16:20:06:414: Start test: 2
2015-04-12 16:20:06:500: End test: 2 execution times: 2000000
2015-04-12 16:20:06:500: Start test: 3
2015-04-12 16:20:06:616: End test: 3 execution times: 2000000
2015-04-12 16:20:06:617: Start test: 4
2015-04-12 16:20:06:717: End test: 4 execution times: 2000000
Perform 2 million retrieval inserts, execution average Time 100 milliseconds, slightly better than Java
And look at the 20 million-time search insert.
1 Static voidMain (string[] args)2 {3 for(intj =0; J <5; J + +)4 {5hashset<int> ids =Newhashset<int>();6Console.WriteLine (DateTime.Now.NowString () +"To start the test:"+j);7 intForcount = -*10000;8 for(inti =0; i < Forcount; i++)9 {Ten if(!IDs. Contains (i)) One { A IDs. ADD (i); - } - } theConsole.WriteLine (DateTime.Now.NowString () +"End test:"+ j +"number of executions:"+forcount); - } - console.readline (); -}
2015-04-12 16:20:51:746: Start test: 0
2015-04-12 16:20:52:633: End test: 0 execution times: 20000000
2015-04-12 16:20:52:634: Start test: 1
2015-04-12 16:20:53:645: End test: 1 execution times: 20000000
2015-04-12 16:20:53:645: Start test: 2
2015-04-12 16:20:54:615: End test: 2 execution times: 20000000
2015-04-12 16:20:54:615: Start test: 3
2015-04-12 16:20:55:623: End test: 3 execution times: 20000000
2015-04-12 16:20:55:624: Start test: 4
2015-04-12 16:20:56:561: End test: 4 execution times: 20000000
Look at the 20 million times the insertion time is approximately 1 seconds.
This does not know is the magnitude of the performance problem????
Let's take a look at it and insert it directly. , because the insert also comes with the search criteria
1 Private Static FinalLogger log = Logger.getlogger (Newclass.class);2 3 Public Static voidMain (string[] args) {4 for(intj = 0; J < 5; J + +) {5hashset<integer> ids =NewHashset<> (0);6Log.error ("Start test:" +j);7 intForcount = 2000 * 10000;8 for(inti = 0; i < Forcount; i++) {9 Ids.add (i);Ten } OneLog.error ("End test:" + j + "execution count:" +forcount); A } -}
[04-12 16:30:32:591], start test: 0
[04-12 16:30:44:725], end test: 0 execution times: 20000000
[04-12 16:30:44:726], start test: 1
[04-12 16:30:57:535], end test: 1 execution times: 20000000
[04-12 16:30:57:536], start test: 2
[04-12 16:31:08:237], end test: 2 execution times: 20000000
[04-12 16:31:08:237], start test: 3
[04-12 16:31:19:306], end test: 3 execution times: 20000000
[04-12 16:31:19:309], start test: 4
[04-12 16:31:23:810], end test: 4 execution times: 20000000
It takes about 9 seconds to insert Java 20 million times,
1 Static voidMain (string[] args)2 {3 for(intj =0; J <5; J + +)4 {5hashset<int> ids =Newhashset<int>();6Console.WriteLine (DateTime.Now.NowString () +"To start the test:"+j);7 intForcount = -*10000;8 for(inti =0; i < Forcount; i++)9 {Ten IDs. ADD (i); One } AConsole.WriteLine (DateTime.Now.NowString () +"End test:"+ j +"number of executions:"+forcount); - } - console.readline (); the}
2015-04-12 16:32:35:355: Start test: 0
2015-04-12 16:32:36:064: End test: 0 execution times: 20000000
2015-04-12 16:32:36:065: Start test: 1
2015-04-12 16:32:36:879: End test: 1 execution times: 20000000
2015-04-12 16:32:36:879: Start test: 2
2015-04-12 16:32:37:657: End test: 2 execution times: 20000000
2015-04-12 16:32:37:657: Start test: 3
2015-04-12 16:32:38:466: End test: 3 execution times: 20000000
2015-04-12 16:32:38:467: Start test: 4
2015-04-12 16:32:39:238: End test: 4 execution times: 20000000
C # 20 million times the insert execution time is less than 1 seconds. , is not very interesting ...
I do not know whether it is my computer problem, or I do not carry out the situation. Ladies and gentlemen, crossing make suggestions to see ...
Research and research. Comparison of Java and. NET HashSet