PoomrokC's blog

By PoomrokC, 7 years ago, In English

Hello everybody , today I'll be testing speed of input/output on Codeforces. My objective is to provide assistance on determining input method for problems (You wouldn't want to get TLE because of I/O right?) and calculate the actual time your algorithm need to work in.

(I am currently Updating this post, if you wanted your language and method to be listed here , please contact me and your name will be largely on this post Xp)!!

Since the post has become very long now , I suggest searching for specific language or you might get dizzy and I cannot deliver you medicine on time :(

Languages tested: C/C++ , JAVA

How do I test?

I made two problems in polygon , then I create mashup contest from them. So I am able to test my solutions separately .

Links to my polygon problem is as follow , you can create your own mashup and test it yourself.

If you do not wish to do that you can see screenshots of my problems that contain every information you need.

Here

test constraints are in the images above , please see before proceeding.

I do not consider 0ms and 15ms to be so much difference on codeforces , so both of them wil be considered 0ms.

INPUT

Every of the solution will follow this idea: we iterate through every input and add up into 64-bit integer then after that we mod it by 1,000,000,007

C/C++

1.Standard scanf

Code

(GNU GCC 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 78ms #6 155ms #7 764ms #8 1512ms

(GNU GCC C11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 31ms #5 78ms #6 156ms #7 764ms #8 1528ms

(GNU G++ 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 93ms #6 156ms #7 764ms #8 1497ms

(GNU G++11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 78ms #6 156ms #7 764ms #8 1513ms

(GNU G++14 6.2.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 78ms #6 171ms #7 779ms #8 1544ms

(MVC++ 2010) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 93ms #6 171ms #7 717ms #8 1419ms

Seems like scanf works the same regardless of compliers.

2.Standard cin

Code

(GNU G++ 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 171ms #5 810ms #6 1622ms #7 8876ms #8 >15000ms(TLE)

(GNU G++11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 171ms #5 826ms #6 1637ms #7 8112ms #8 >15000ms(TLE)

(GNU G++14 6.2.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 140ms #5 655ms #6 1294ms #7 6239ms #8 12619ms

(MVC++ 2010) Time used on tests : #1 0ms #2 0ms #3 0ms #4 78ms #5 343ms #6 655ms #7 3369ms #8 6723ms

LOOK AT THIS!! FOR INTEGERS USING MVC++ 2010 COMPLIER IS FASTER THAN OTHERS

3.cin with ios_base::sync_with_stdio(false); and cin.tie(NULL);

Code

(GNU G++ 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 61ms #5 249ms #6 499ms #7 2432ms #8 4773ms

(GNU G++ 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 46ms #5 249ms #6 483ms #7 2432ms #8 4835ms

(GNU G++14 6.2.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 30ms #5 109ms #6 218ms #7 1091ms #8 2167ms

(MVC++ 2010) Time used on tests : #1 0ms #2 0ms #3 0ms #4 62ms #5 327ms #6 639ms #7 3135ms #8 6255ms

LOOK AT THIS!! FOR INTEGERS USING G++14 COMPLIER IS FASTER THAN OTHERS and MVC++ 2010 had no differences compare to standard cin

4.Using getchar() , modified code from geek4geeks.org

Code

This will work for both positive and negative 32-bit integers , so you might want to try it out.

(GNU GCC 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 30ms #6 46ms #7 140ms #8 295ms

(GNU GCC C11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 0ms #6 30ms #7 139ms #8 264ms

(GNU G++ 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 0ms #6 31ms #7 140ms #8 280ms

(GNU G++11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 0ms #6 30ms #7 139ms #8 280ms

(GNU G++14 6.2.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 31ms #5 140ms #6 296ms #7 1403ms #8 2761ms

(MVC++ 2010) Time used on tests : #1 0ms #2 0ms #3 0ms #4 30ms #5 109ms #6 218ms #7 1122ms #8 2261ms

Something is definitely wrong with G++14,MVC++ 2010 complier with getchar() , so you want to avoid these compilers if you use this fastscan method :) (Try it for yourself , this is amazing!!)

5.Fast and Furious custom by Al.Cash

Please refer to this blog: http://codeforces.com/blog/entry/45835

And my main() here:

Code

Requires C++11 and does not work on MVC++

(GNU G++11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 0ms #6 0ms #7 139ms #8 280ms

(GNU G++14 6.2.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 0ms #6 31ms #7 139ms #8 280ms

JAVA (Tested by bhishma)

1.BufferedReader and String.spit

Code

(JAVA 8) Time used on tests : #1 77ms #2 77ms #3 93ms #4 140ms #5 296ms #6 452ms #7 1653ms #8 3119ms

2.BufferedReader and StringTokenizer

Code

(JAVA 8) Time used on tests : #1 93ms #2 109ms #3 78ms #4 108ms #5 155ms #6 264ms #7 873ms #8 1606ms

3.Custom InputReader

Code

(JAVA 8) Time used on tests : #1 93ms #2 93ms #3 78ms #4 108ms #5 93ms #6 139ms #7 280ms #8 452ms

OUTPUT

C/C++

1.Standard printf

Code

(GNU GCC 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 31ms #5 202ms #6 1138ms #7 2292ms

(GNU GCC C11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 46ms #4 421ms #5 4367ms #6 >15000ms(TLE) #7 >=15000ms(TLE)

(GNU G++ 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 31ms #5 217ms #6 1169ms #7 2324ms

(GNU G++11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 31ms #5 218ms #6 1169ms #7 2308ms

(GNU G++14 6.2.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 202ms #6 1154ms #7 2262ms

(MVC++ 2010) Time used on tests : #1 0ms #2 0ms #3 0ms #4 31ms #5 233ms #6 1232ms #7 2386ms

AVOID GCC C11 if possible!!

2.Standard cout

Code

(GNU G++ 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 62ms #5 514ms #6 2464ms #7 4944ms

(GNU G++11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 46ms #5 514ms #6 2433ms #7 4913ms

(GNU G++14 6.2.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 30ms #5 187ms #6 888ms #7 1684ms

(MVC++ 2010) Time used on tests : #1 0ms #2 0ms #3 0ms #4 77ms #5 577ms #6 2916ms #7 5834ms

LOOK AT THIS!! FOR INTEGERS USING G++14 COMPLIER IS FASTER THAN OTHERS , EVEN PRINTF ITSELF?

3.cout with ios_base::sync_with_stdio(false);

Code

(GNU G++ 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 46ms #5 452ms #6 2293ms #7 4742ms

(GNU G++11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 46ms #5 468ms #6 2292ms #7 4616ms

(GNU G++14 6.2.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 30ms #5 139ms #6 717ms #7 1403ms

(MVC++ 2010) Time used on tests : #1 0ms #2 0ms #3 0ms #4 62ms #5 697ms #6 2932ms #7 5943ms

LOOK AT THIS!! FOR INTEGERS USING G++14 COMPLIER IS FASTER THAN OTHERS , EVEN PRINTF ITSELF? Also MVC++ 2010 does not seems to profit compare to standard cout

4.Using putchar()

Code

My code only work for positive integers!!

(GNU GCC 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 62ms #6 327ms #7 686ms

(GNU GCC C11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 31ms #5 61ms #6 342ms #7 655ms

(GNU G++ 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 62ms #6 373ms #7 686ms

(GNU G++11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 46ms #6 327ms #7 670ms

(GNU G++14 6.2.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 46ms #5 373ms #6 2058ms #7 4102ms

(MVC++ 2010) Time used on tests : #1 0ms #2 0ms #3 0ms #4 30ms #5 296ms #6 1715ms #7 3213ms

So G++14 and MVC++ 2010 also have problem with putchar too :(. Anyway , I encouraged you to modify my code to be able to use with negative integer as well :)

5.Fast and Furious custom by Al.Cash

Please refer to this blog: http://codeforces.com/blog/entry/45835

And my main() here:

Code

Requires C++11 and does not work on MVC++

(GNU G++11 5.1.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 62ms #6 296ms #7 577ms

(GNU G++14 6.2.0) Time used on tests : #1 0ms #2 0ms #3 0ms #4 0ms #5 61ms #6 296ms #7 592ms

JAVA (Tested by bhishma)

1.System.out.print()

Code

(JAVA 8) Time used on tests : #1 109ms #2 139ms #3 186ms #4 592ms #5 4945ms #6 >15000ms(TLE) #7 >15000ms(TLE)

2.PrintWriter

Code

(JAVA 8) Time used on tests : #1 93ms #2 124ms #3 139ms #4 140ms #5 296ms #6 904ms #7 1590ms

3.System.out.print() with StringBuilder

Code

(JAVA 8) Time used on tests : #1 108ms #2 93ms #3 109ms #4 124ms #5 249ms #6 810ms #7 1497ms

4.System.out.print() with StringBuilder but clears the StringBuilder buffer after certain writes

Code

(JAVA 8) Time used on tests : #1 124ms #2 124ms #3 124ms #4 124ms #5 264ms #6 763ms #7 1418ms

5.PrintWriter+StringBuilder

Code

(JAVA 8) Time used on tests : #1 93ms #2 78ms #3 108ms #4 108ms #5 233ms #6 779ms #7 1482ms

UPD1: Added putchar()/getchar() method for C/C++

UPD2: Added tests for MVC++ 2010 compiler

UPD3: Added JAVA tests , thanks to bhishma

UPD4: Added fast and furious C/C++ tests , thanks to Al.Cash

  • Vote: I like it
  • +82
  • Vote: I do not like it

»
7 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by PoomrokC (previous revision, new revision, compare).

»
7 years ago, # |
  Vote: I like it 0 Vote: I do not like it

You can test my implementation in case you'll be interested http://codeforces.com/blog/entry/45835

  • »
    »
    7 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    The speed is really impressive , I'm adding report to my blog. That's really FAST AND FURIOUS!! Thanks for your awesome code :)