Jump to content
  • Advertisement

Benjamin Shefte

Member
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Benjamin Shefte

  • Rank
    Newbie

Personal Information

Social

  • Steam
    ben5015se

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Benjamin Shefte

    Convert functions to linux (gcc)

    this is what i have now: static __int64 MyQueryPerformanceCounter() { // LARGE_INTEGER anInt; // QueryPerformanceCounter(&anInt); // return anInt.QuadPart; unsigned long x,y; #if defined(WIN32) _asm { rdtsc mov x, eax mov y, edx } #else __asm__ __volatile__ ("rdtsc" : "=a" (x), "=d" (y)); // OR THIS CODE? Code to read Time Stamp Counter /* asm( " rdtsc\n" " mov %%eax, %0\n" " mov %%edx, %1\n" : "=a" (x), "=d" (y) ); */ #endif __int64 result = y; result<<=32; result|=x; return result; } static __int64 MyQueryPerformanceFrequency() { timeval t1, t2; __int64 s2, e2; double elapsedTime; // start timer gettimeofday(&t1, NULL); s2 = MyQueryPerformanceCounter(); Sleep(50); e2 = MyQueryPerformanceCounter(); // stop timer gettimeofday(&t2, NULL); // compute and print the elapsed time in millisec elapsedTime = (t2.tv_sec - t1.tv_sec) * 1000.0; // sec to ms elapsedTime += (t2.tv_usec - t1.tv_usec) / 1000.0; // us to ms // cout << elapsedTime << " ms.\n"; return (__int64)((e2 - s2)/elapsedTime); } does that look acceptable?
  2. Hey there, I have this old code im trying to compile using GCC and am running into a few issues.. im trying to figure out how to convert these functions to gcc static __int64 MyQueryPerformanceFrequency() { static __int64 aFreq = 0; if(aFreq!=0) return aFreq; LARGE_INTEGER s1, e1, f1; __int64 s2, e2, f2; QueryPerformanceCounter(&s1); s2 = MyQueryPerformanceCounter(); Sleep(50); e2 = MyQueryPerformanceCounter(); QueryPerformanceCounter(&e1); QueryPerformanceFrequency(&f1); double aTime = (double)(e1.QuadPart - s1.QuadPart)/f1.QuadPart; f2 = (e2 - s2)/aTime; aFreq = f2; return aFreq; } void PerfTimer::GlobalStart(const char *theName) { gPerfTimerStarted = true; gPerfTotalTime = 0; gPerfTimerStartCount = 0; gPerfElapsedTime = 0; LARGE_INTEGER anInt; QueryPerformanceCounter(&anInt); gPerfResetTick = anInt.QuadPart; } /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// void PerfTimer::GlobalStop(const char *theName) { LARGE_INTEGER anInt; QueryPerformanceCounter(&anInt); LARGE_INTEGER aFreq; QueryPerformanceFrequency(&aFreq); gPerfElapsedTime = (double)(anInt.QuadPart - gPerfResetTick)/aFreq.QuadPart*1000.0; gPerfTimerStarted = false; } I also tried converting this function (original function is the first function below and my converted for gcc function is under that) is this correct?: #if defined(WIN32) static __int64 MyQueryPerformanceCounter() { // LARGE_INTEGER anInt; // QueryPerformanceCounter(&anInt); // return anInt.QuadPart; #if defined(WIN32) unsigned long x,y; _asm { rdtsc mov x, eax mov y, edx } __int64 result = y; result<<=32; result|=x; return result; } #else static __int64 MyQueryPerformanceCounter() { struct timeval t1, t2; double elapsedTime; // start timer gettimeofday(&t1, NULL); Sleep(50); // stop timer gettimeofday(&t2, NULL); // compute and print the elapsed time in millisec elapsedTime = (t2.tv_sec - t1.tv_sec) * 1000.0; // sec to ms elapsedTime += (t2.tv_usec - t1.tv_usec) / 1000.0; // us to ms return elapsedTime; } #endif Any help would be appreciated, Thank you!
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!