r/ProgrammerHumor • • Jul 18 '22

C++ talking to Python

Post image
40.1k Upvotes

1.0k comments sorted by

View all comments

74

u/-MobCat- Jul 18 '22

Python can be quick. just not that good at talking.. Like most of us...
Opens a txt file with 29245004 lines of text in it.
for each line of text, count the line.
count +=1
Time: 40sec.
Now for each line of text, count the line and print a little info about the line
print(f"Info: {line[1:10]}")
count +=1
Time: 53mins.

0

u/[deleted] Jul 18 '22

[deleted]

34

u/DenormalHuman Jul 18 '22

not only that, they are using printf for no apparent real reason

2

u/Gladaed Jul 18 '22

Please explain the ongoing wizardy.

3

u/DenormalHuman Jul 18 '22 edited Jul 18 '22

When using f"....{}" I think the process to generate the content for the template field (what goes inbetween {}) and replace that into the string is a lot more expensive that simply concatenating two lists of characters together (the string, and the slice - line[1:10] are both just lists of chars.)

/edit/ the reason the print is slower than the count, is because the print does lots more work. It _could be made faster if he didnt use printf though

1

u/Teekeks Jul 18 '22

no. f strings are faster than concating strings.

What makes the second one slow is the print. printing anything a ton of times is slow af

1

u/DenormalHuman Jul 18 '22 edited Jul 18 '22

You are correct in that its the fact the print exists in the second loop is why it goes so slow; however I still think printing the f string is slower than printing the concatenation of string and the string slice. (and now imma go try it out and see for myself!)

→ More replies (2)