আমি সি ++ তে কিছু পারফরম্যান্স সমালোচনামূলক কাজ করছি, এবং আমরা বর্তমানে সহজাত ভাসমান পয়েন্টগুলির যে সমস্যাগুলির জন্য "এটি দ্রুত" এর জন্য পূর্ণসংখ্যার গণনা ব্যবহার করছি। এটি সম্পূর্ণ বিরক্তিকর সমস্যার কারণ এবং প্রচুর বিরক্তিকর কোড যুক্ত করে।
এখন, আমার মনে আছে যে প্রায় 386 দিন ভাসমান পয়েন্ট গণনাগুলি এত ধীরে ধীরে প্রায় ছিল, যেখানে আমি বিশ্বাস করি (আইআইআরসি) যে সেখানে একটি optionচ্ছিক সহ-প্রসেসর ছিল। তবে অবশ্যই আজকাল তাত্পর্যপূর্ণ জটিল এবং শক্তিশালী সিপিইউগুলির সাথে ভাসমান পয়েন্ট বা পূর্ণসংখ্যার গণনা করা যদি "গতির" সাথে কোনও তফাত্ করে না? বিশেষত যেহেতু প্রকৃত গণনার সময়টি পাইপলাইন স্টলের কারণ বা মূল স্মৃতি থেকে কিছু আনার মতো কোনও কিছুর সাথে তুলনা করে?
আমি জানি সঠিক উত্তরটি লক্ষ্য হার্ডওয়্যারটির বেঞ্চমার্ক করা, এটি পরীক্ষা করার ভাল উপায় কী হবে? আমি দুটি ক্ষুদ্র সি ++ প্রোগ্রাম লিখেছি এবং তাদের রান সময়কে লিনাক্সের "সময়" এর সাথে তুলনা করেছি, তবে আসল রান সময়টি খুব পরিবর্তনশীল (আমি কোনও ভার্চুয়াল সার্ভারে চলতে সহায়তা করি না)। আমার পুরো দিনটি কয়েকশো মানদণ্ডে চালিয়ে যাওয়া, গ্রাফ তৈরি করা ইত্যাদি কি আপেক্ষিক গতির একটি যুক্তিসঙ্গত পরীক্ষা পেতে আমি কিছু করতে পারি? কোন ধারণা বা চিন্তা? আমি কি পুরোপুরি ভুল?
আমি নীচের হিসাবে যে প্রোগ্রামগুলি ব্যবহার করেছি সেগুলি কোনওভাবেই অভিন্ন নয়:
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <time.h>
int main( int argc, char** argv )
{
int accum = 0;
srand( time( NULL ) );
for( unsigned int i = 0; i < 100000000; ++i )
{
accum += rand( ) % 365;
}
std::cout << accum << std::endl;
return 0;
}
প্রোগ্রাম 2:
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <time.h>
int main( int argc, char** argv )
{
float accum = 0;
srand( time( NULL ) );
for( unsigned int i = 0; i < 100000000; ++i )
{
accum += (float)( rand( ) % 365 );
}
std::cout << accum << std::endl;
return 0;
}
আগাম ধন্যবাদ!
সম্পাদনা: আমার যে প্ল্যাটফর্মটি আমি যত্নশীল তা হ'ল ডেস্কটপ লিনাক্স এবং উইন্ডোজ মেশিনে নিয়মিত x86 বা x86-64 চলছে।
সম্পাদনা 2 (নীচে একটি মন্তব্য থেকে আটকানো): বর্তমানে আমাদের একটি বিস্তৃত কোড বেস রয়েছে। সত্যই আমি জেনারালাইজেশনের বিরুদ্ধে এসেছি যে আমাদের "পূর্ণসংখ্যার গণনা দ্রুত হওয়ার কারণে ভাসা ব্যবহার করা উচিত নয়" - এবং এই সাধারণীকরণ অনুমানকে অস্বীকার করার জন্য আমি একটি উপায় (যদি এটি এমনকি সত্য হয়) সন্ধান করি। আমি বুঝতে পেরেছিলাম যে সমস্ত কাজ করা এবং পরে এটির প্রোফাইলিংয়ের সংক্ষিপ্ততার জন্য আমাদের সঠিক ফলাফল সম্পর্কে ভবিষ্যদ্বাণী করা অসম্ভব।
যাইহোক, আপনার সমস্ত দুর্দান্ত উত্তর এবং সাহায্যের জন্য ধন্যবাদ। অন্য কিছু যোগ করতে নির্দ্বিধায় :)।
float
গতি বাড়িয়ে তোলে, তবে সাধারণত double
হয় না।
addl
পরিবর্তেfadd
)। সত্যিই ভাল পরিমাপ করার একমাত্র উপায় হ'ল আপনার আসল প্রোগ্রামের একটি মূল অংশ এবং এর বিভিন্ন সংস্করণ প্রোফাইল। দুর্ভাগ্যক্রমে যে চেষ্টা অনেক চেষ্টা না করে বেশ শক্ত হতে পারে। সম্ভবত আমাদের লক্ষ্যযুক্ত হার্ডওয়্যার এবং আপনার সংকলকটি লোকেদের কমপক্ষে আপনাকে পূর্ব-বিদ্যমান অভিজ্ঞতা ইত্যাদি প্রদানfixed_point
করতে সহায়তা করবে your