ฉันกำลังพอร์ตเกมซึ่งเดิมเขียนขึ้นสำหรับ Win32 API ไปยัง Linux (ดีคือพอร์ต OS X ของพอร์ต Win32 ไปยัง Linux)
ฉันได้ดำเนินการQueryPerformanceCounter
โดยให้ uSeconds ตั้งแต่เริ่มกระบวนการ:
BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount)
{
gettimeofday(¤tTimeVal, NULL);
performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec);
performanceCount->QuadPart *= (1000 * 1000);
performanceCount->QuadPart += (currentTimeVal.tv_usec - startTimeVal.tv_usec);
return true;
}
สิ่งนี้ควบคู่ไปกับการQueryPerformanceFrequency()
ให้ความถี่คงที่ 1000000 ทำงานได้ดีบนเครื่องของฉันทำให้ฉันมีตัวแปร 64 บิตที่มีuSeconds
ตั้งแต่เริ่มต้นโปรแกรม
ดังนั้นนี้เป็นแบบพกพา? ฉันไม่ต้องการที่จะค้นพบว่ามันทำงานแตกต่างออกไปหากเคอร์เนลถูกคอมไพล์ด้วยวิธีใดวิธีหนึ่งหรืออะไรทำนองนั้น อย่างไรก็ตามฉันสบายดีที่ไม่สามารถพกพาไปยังสิ่งอื่นที่ไม่ใช่ Linux ได้