मैंने एसएसई प्रदर्शन को मापने के लिए ऑनलाइन अपनाया।क्या यह घड़ी इंटेल i3 पर उपयुक्त है?
#ifndef __TIMER_H__
#define __TIMER_H__
#pragma warning (push)
#pragma warning (disable : 4035) // disable no return value warning
__forceinline unsigned int GetPentiumTimer()
{
__asm
{
xor eax,eax // VC won't realize that eax is modified w/out this
// instruction to modify the val.
// Problem shows up in release mode builds
_emit 0x0F // Pentium high-freq counter to edx;eax
_emit 0x31 // only care about low 32 bits in eax
xor edx,edx // so VC gets that edx is modified
}
}
#pragma warning (pop)
#endif
मैं अपने पेंटियम डी E2200 CPU पर माप किया था, और यह ठीक काम करता है (यह पता चलता है गठबंधन SSE निर्देश तेजी से कर रहे हैं)। लेकिन मेरे आई 3 सीपीयू पर मुझे 70% परीक्षणों के अनधिकृत निर्देश मिलते हैं।
क्या आपको लगता है कि यह घड़ी टिक माप i3 CPU के लिए उपयुक्त नहीं है?
मुझे पूरा यकीन है कि वीसी इनलाइन एएसएम में 'आरडीटीएससी' निर्देश का समर्थन करता है। इसके अलावा आप ऊपरी 32-बिट्स की परवाह क्यों नहीं करते हैं, और आपको '__declspec (नग्न) 'का उपयोग करना चाहिए या बेहतर मूल्य में एक मूल्य को बेहतर तरीके से वापस करना चाहिए। इसके अलावा मैं ['QueryPerformanceCounter'] (http: //msdn.microsoft.com/en-us/library/windows/desktop/ms644904 \ (v = vs.85 \) का उपयोग करना चाहता हूं।एएसपीएक्स) या इसके बजाय समान कार्य (आवृत्ति स्केलिंग/बहु-कोर प्रोसेसर आदि के साथ समस्याओं को ध्यान में रखते हुए)। – user786653
आरडीटीएससी * एक धारावाहिक निर्देश नहीं है, जिसका अर्थ यह है कि इसे आदेश से निष्पादित किया जा सकता है। यदि आप इसे सीधे उपयोग करने का आग्रह करते हैं, तो आप आमतौर पर सीरियलाइजेशन को मजबूर करने के लिए CPUID का उपयोग करना चाहते हैं (यह कुछ धारावाहिक निर्देशों में से एक है जिसे आप उपयोगकर्ता मोड में निष्पादित कर सकते हैं)। –
मेरे पास QueryPerformanceCounter भी है। यह परिणामों के अनुसार बहुत विश्वसनीय नहीं है। एनएक्सएन मैट्रिक्स गुणा के लिए, एन = 10000 या उच्चतर, समय केवल 0.3 सेकंड लेता है? मुझे नहीं लगता कि यह बिल्कुल सटीक है (कंसोल पर परिणाम देखने के लिए 2 सेकंड से अधिक समय लगता है), इसलिए मैं घड़ी की टिकों पर जाता हूं। मैं अब RDTSC को आजमाने की कोशिश कर रहा हूं। धन्यवाद। – CppLearner