පවත්නා පිළිතුරු සඳහා මම ඉක්මන් මිණුම් ලකුණක් කර ඇත්තෙමි
- සම්මත මෙවලම් පමණක් භාවිතා කරන්න (
lua
හෝ වැනි දේ ගැන කණගාටුයි rocket
),
- සැබෑ එක්-ලයිනර් වේ,
- විශාල සංඛ්යාවක් (මිලියන 100) එකතු කිරීමේ හැකියාව ඇත, සහ
- වේගවත් (විනාඩියකට වඩා වැඩි කාලයක් ගත වූ ඒවා මම නොසලකා හැරියෙමි).
මම සෑම විටම විසඳුම් කිහිපයක් සඳහා විනාඩියකටත් අඩු කාලයකින් මගේ යන්ත්රයේ කළ හැකි මිලියන 1 සිට 100 දක්වා සංඛ්යා එකතු කළෙමි.
ප්රති results ල මෙන්න:
පයිතන්
:; seq 100000000 | python -c 'import sys; print sum(map(int, sys.stdin))'
5000000050000000
# 30s
:; seq 100000000 | python -c 'import sys; print sum(int(s) for s in sys.stdin)'
5000000050000000
# 38s
:; seq 100000000 | python3 -c 'import sys; print(sum(int(s) for s in sys.stdin))'
5000000050000000
# 27s
:; seq 100000000 | python3 -c 'import sys; print(sum(map(int, sys.stdin)))'
5000000050000000
# 22s
:; seq 100000000 | pypy -c 'import sys; print(sum(map(int, sys.stdin)))'
5000000050000000
# 11s
:; seq 100000000 | pypy -c 'import sys; print(sum(int(s) for s in sys.stdin))'
5000000050000000
# 11s
අවුල්
:; seq 100000000 | awk '{s+=$1} END {print s}'
5000000050000000
# 22s
අලවන්න සහ බීසී
මෙය මගේ යන්ත්රයේ මතකය නැති වී ගියේය. එය ආදානයේ ප්රමාණයෙන් අඩක් (අංක මිලියන 50) වැඩ කළේය:
:; seq 50000000 | paste -s -d+ - | bc
1250000025000000
# 17s
:; seq 50000001 100000000 | paste -s -d+ - | bc
3750000025000000
# 18s
ඒ නිසා මම හිතන්නේ එය මිලියන 100 සඳහා ඩොලර් 35 ක් ගතවනු ඇත.
පර්ල්
:; seq 100000000 | perl -lne '$x += $_; END { print $x; }'
5000000050000000
# 15s
:; seq 100000000 | perl -e 'map {$x += $_} <> and print $x'
5000000050000000
# 48s
රූබි
:; seq 100000000 | ruby -e "puts ARGF.map(&:to_i).inject(&:+)"
5000000050000000
# 30s
සී
සංසන්දනය කිරීම සඳහා මම සී අනුවාදය සම්පාදනය කර මෙයද පරීක්ෂා කළෙමි, මෙවලම් මත පදනම් වූ විසඳුම් කෙතරම් මන්දගාමීද යන්න පිළිබඳ අදහසක් ලබා ගැනීම සඳහා.
#include <stdio.h>
int main(int argc, char** argv) {
long sum = 0;
long i = 0;
while(scanf("%ld", &i) == 1) {
sum = sum + i;
}
printf("%ld\n", sum);
return 0;
}
:; seq 100000000 | ./a.out
5000000050000000
# 8s
නිගමනය
C ඇත්ත වශයෙන්ම 8s සමඟ වේගවත් වේ, නමුත් Pypy විසඳුම එකතු කරන්නේ 30% සිට 11s දක්වා ඉතා සුළු පිරිවැයක් පමණි . එහෙත්, සාධාරණ ලෙස කිවහොත්, පයිපී හරියටම සම්මත නොවේ. බොහෝ අය CPython ස්ථාපනය කර ඇති අතර එය සැලකිය යුතු ලෙස මන්දගාමී (22s), ජනප්රිය අව්ක් විසඳුම තරම් වේගවත් ය.
සම්මත මෙවලම් මත පදනම් වූ වේගවත්ම විසඳුම වන්නේ පර්ල් (15s) ය.