আমি অন্যান্য উত্তর পড়ার সুবিধা পেয়েছি। জন্য আমার মত নতুনদের মানুষ কারণ জানা উচিত কেন আমরা এত বড় পূর্ণসংখ্যা এখানে সাথে এসেছেন ডিলিং যে উভয় Python
এবং bc
না ডান-মিশুক , exponentiation সম্প্রসারণ যার মানে এই নয় 6^36
আমরা মূল্যায়ন করছেন বরং 6^46656
যা যথেষ্ট বড়। 1
নিম্নলিখিত কমান্ডগুলির বিভিন্নতা ব্যবহার করে, আমরা time
সংরক্ষিত শব্দ এবং কমান্ড উভয়ের আউটপুটটির একটি নির্দিষ্ট উপাদানের জন্য গড় উত্তোলন করতে পারি :
for i in {1..1000}; do (time echo 6^6^6 | bc > /dev/null) 2>&1; done | grep 'rea' | sed -e s/.*m// | awk '{sum += $1} END {print sum / NR}'
for i in {1..1000}; do (/usr/bin/time -v sh -c 'echo 6^6^6 | bc > /dev/null') 2>&1; done | grep 'Use' | sed -e s/.*:// | awk '{sum += $1} END {print sum / NR}'
তুলনা থেকে পুরোপুরি অপসারণ করা অন্য রুটে যাওয়া এবং ফাইলটিকে সরিয়ে ফেলা সম্ভব। এছাড়াও, আমরা ভালো কিছু সঙ্গে বিসি এর সময়জ্ঞান তুলনা করতে পারবেন dc
কমান্ড, যেমন ঐতিহাসিকভাবে সাবেক একটি "সামনে শেষ প্রসেসর" আধুনিক হয়। নিম্নলিখিত কমান্ডগুলির সময়সীমা নির্ধারণ করা হয়েছিল:
echo 6^6^6 | bc
echo 6 6 6 ^ ^ p | dc
echo print 6**6**6 | python2.7
খেয়াল করুন dc
কমান্ডটি ক্ষয়ের জন্য বাম-সহযোগী is 2
আমাদের time
1000 টি পুনরাবৃত্তির (সেকেন্ডে) জন্য (বাশ) কিছু ফলাফল রয়েছে :
0.229678 real bc
0.228348 user bc
0.000569 sys bc
0.23306 real dc
0.231786 user dc
0.000395 sys dc
0.07 real python
0.065907 user python
0.003141 sys python
bc
এবং dc
এই প্রসঙ্গে তুলনামূলক কর্মক্ষমতা অফার।
জিএনইউ কমান্ডের থেকে কম নির্ভুল 3 ফলাফল (স্কেল যথার্থতা এখানে বৈধ নয় তবে ফলাফলগুলি একই রকম):/usr/bin/time
time
0.2224 user bc
0 sys bc
0.23 Elapsed bc
0.22998 user dc
0 sys dc
0.23 Elapsed dc
0.06008 user python
0 sys python
0.07 Elapsed python
এর একটি সুবিধা /usr/bin/time
হ'ল এটি -v
বিকল্পটি সরবরাহ করে যা অনেক বেশি তথ্য দেয় যা শেষ পর্যন্ত কার্যকর হতে পারে।
পাইথন মডিউলটির সাথে কথা বলার জন্য অভ্যন্তরীণভাবে এটি মূল্যায়ন করাও সম্ভব timeit
:
python2.7 -m timeit -n 1000 -r 1 'print 6**6**6' | grep 'loops'
1000 loops, best of 1: 55.4 msec per loop
আমরা এর আগে যা দেখেছি তার থেকে কিছুটা দ্রুত। দোভাষী নিজেই চেষ্টা করে দেখুন:
>>> import timeit
>>> import sys
>>> import os
>>> T = timeit.Timer("print 6**6**6")
>>> n = int(1000)
>>> f = open(os.devnull, 'w')
>>> sys.stdout = f
>>> t = t.timeit(n)
>>> sys.stdout = sys.__stdout__
>>> print t/n
0.0553743481636
এটাই আমি দেখেছি দ্রুততম।
আমরা যদি এর চেয়ে কম ক্ষুদ্রতর মূল্যায়ন মূল্যায়ন করি 6^6
তবে টাইম কমান্ডটি বিস্ময়কর ফলাফল দেয় - একই for
লুপ কমান্ড ব্যবহার করে আমাদের এখন রয়েছে:
0.001001 bc real
0.000304 user
0.000554 sys
0.014 python real i.e. 10x more than bc??
0.010432 user
0.002606 sys
একটি ছোট পূর্ণসংখ্যা সঙ্গে bc
হঠাৎ হঠাৎ অনেক দ্রুত ?? সিস্টেম পুনরায় বুট থেকে দ্বিতীয় রান পর্যন্ত কোনও তফাত হয় না। তবুও একই সময়ে, আমরা timeit
পাইথনের জন্য ব্যবহার করলে , আমরা পাই:
python2.7 -m timeit -n 100000 -r 1 'print 6**6' | grep loops
100000 loops, best of 1: 0.468 usec per loop
এটি মাইক্রোসেকেন্ডস , মিলিসেকেন্ড নয়, তাই for
লুপটি ব্যবহার করে খুব ধীর ফলাফলের সাথে এটি মেলে না । এটিকে আরও পরীক্ষা করার জন্য অন্যান্য সরঞ্জামগুলির প্রয়োজন হতে পারে এবং অন্যরা যেমন এখানে বর্ণিত চোখের চেয়ে আরও বেশি কিছু ব্যাখ্যা করেছে। দেখে মনে হচ্ছে প্রশ্নের দৃশ্যে পাইথন দ্রুত ছিল তবে এটি পরিষ্কার নয় যে এর বাইরেও কোন সিদ্ধান্ত নেওয়া যায় ...
1. এটি ইকো-এর পাটিগণিতের সম্প্রসারণের মতো কোনও কিছুর আওতার বাইরে বলা বাহুল্য echo $((6**6**6))
- অর্থাত্ এটির bash
জন্য ডান-অ্যাসোসিয়েটিভও ঘটে 6^6^6 = 6^(6^6)
।
2. এই সঙ্গে তুলনা করুন: 6 6 ^ 6 ^ p
।
৩. বিএসডি ইউনিক্স (জিএনইউ সময় তথ্য নথি) চালানোর সময় জিএনইউ টাইম কমান্ড আরও তথ্য সরবরাহ করতে পারে: 'সময়' দ্বারা প্রদর্শিত বেশিরভাগ তথ্য 'ওয়েট 3' সিস্টেম কল থেকে প্রাপ্ত। সংখ্যাগুলি কেবল 'ওয়েট 3' দিয়ে ফিরে আসার মতোই ভাল। 'সিস্টেম' যে সমস্ত সংস্থাগুলি 'সময়' প্রতিবেদন করতে পারে সেগুলির অনেকগুলি সিস্টেম পরিমাপ করে না; এই সংস্থানগুলি শূন্য হিসাবে রিপোর্ট করা হয়েছে। যে সমস্ত সিস্টেমে সর্বাধিক বা সমস্ত সংস্থান পরিমাপ করা হয় সেগুলি 4.2 বা 4.3BSD এর উপর ভিত্তি করে। পরে বিএসডি প্রকাশে বিভিন্ন মেমরি পরিচালন কোড ব্যবহার করা হয় যা কম সংস্থার পরিমাপ করে। - যেসব সিস্টেমে 'অপেক্ষা3' কল নেই যা স্থিতির তথ্য ফেরত দেয়, পরিবর্তে 'সময়' সিস্টেম কলটি ব্যবহৃত হয়। এটি 'অপেক্ষা3' এর চেয়ে অনেক কম তথ্য সরবরাহ করে, সুতরাং সেই সিস্টেমে 'সময়' বেশিরভাগ সংস্থানকে শূন্য হিসাবে প্রতিবেদন করে।