আমি বিদ্যমান উত্তরগুলির উপর একটি দ্রুত মানদণ্ড করেছি
- কেবলমাত্র স্ট্যান্ডার্ড সরঞ্জামগুলি ব্যবহার করুন (যেমন পণ্যগুলির জন্য দুঃখিত
lua
বা rocket
),
- সত্যিকারের এক-রেখার,
- বিপুল পরিমাণ সংখ্যক (100 মিলিয়ন) যোগ করতে সক্ষম, এবং
- দ্রুত (আমি এক মিনিটের চেয়ে বেশি সময় নিয়ে এগুলিকে উপেক্ষা করেছি)।
আমি সর্বদা 1 থেকে 100 মিলিয়ন সংখ্যার যোগ করেছিলাম যা বেশ কয়েকটি সমাধানের জন্য আমার মেশিনে এক মিনিটেরও কম সময়ে কার্যকর ছিল।
ফলাফল এখানে:
পাইথন
:; 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
awk
:; 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
উপসংহার
সি অবশ্যই 8s এর সাথে দ্রুততম, তবে পাইপির সমাধানটি প্রায় 30% থেকে 11s এর খুব সামান্য ওভারহেড যুক্ত করে । তবে, সত্যি কথা বলতে গেলে পাইপি ঠিক স্ট্যান্ডার্ড নয়। বেশিরভাগ লোকেরা কেবল সিপিথন ইনস্টল করে রেখেছেন যা উল্লেখযোগ্যভাবে ধীর (22 সে), জনপ্রিয় ওউ সমাধান হিসাবে ঠিক তত দ্রুত।
মানক সরঞ্জামগুলির উপর ভিত্তি করে দ্রুততম সমাধান হ'ল পার্ল (15 এস)।