### dx24816's blog

By dx24816, history, 11 months ago, ,

Hello,

I use to include the following code into my headers because I saw others doing the same.

#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")


For the most part, it has made some of my programs that previously got TLE get AC. However I recently kept getting TLE with these comments in the header of my program for a problem, and when I removed them, I got AC. So I'm wondering what do these comments do, and when should I use them? Thanks in advance!

Edit:

Here is the TLE: http://codeforces.com/contest/1009/submission/40353118

Here is the AC: http://codeforces.com/contest/1009/submission/40353105

You can check the only difference is the pragma.

-dx24816

• +14

 » 11 months ago, # |   0 Auto comment: topic has been updated by dx24816 (previous revision, new revision, compare).
 » 11 months ago, # | ← Rev. 2 →   0 Please give examples of removing these giving AC.BTW, if this is for USACO, I think they will switch you to optimize level 0 if you use any of these flags. So don't try it there.
•  » » 11 months ago, # ^ |   0 This was on Codeforces. I have added the codes.
•  » » » 11 months ago, # ^ |   0 It is optimization flags issue. I remember hearing in the past that optimize levels more aggressive than 2 can actually result in slowdowns. CF uses optimize level 2 by default. Ofast is the one slowing you down the most.Removing the target instructions also seems to provide a speedup. I don't have any explanation for this.
•  » » » » 11 months ago, # ^ | ← Rev. 2 →   0 I see your point. The problem is if I'm on an actually Codeforces contest, how would I know if pragma speeds up my code or slows it down without potentially getting a bad submission, since sometimes adding the pragma on Codeforces turns my code from TLE to AC.
•  » » » » » 11 months ago, # ^ |   0 I never use the Ofast pragma. You shouldn't eitherFor the target instructions, use them when you are trying to brute force something with a lot of simple for loops (preferably over large-sized arrays, or with no arrays at all), that's where it helps the most. Otherwise I don't use them.
•  » » » » » » 4 weeks ago, # ^ |   0 I was thinking to use these pragma comments in my code I have found about all the pragma comments from here https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html but there was not much explanation about target pragma. So Can you please give more details on GCC target pragma. Thanks
•  » » » » » » » 4 weeks ago, # ^ |   +1 It's stuff that targets for physical architecture and speeds up brute-force loops and such immensely, and it can be helpful sometimes. See MrDindows or dmkozyrev for more
 » 11 months ago, # |   0 Auto comment: topic has been updated by dx24816 (previous revision, new revision, compare).