-
יש לי שני קטעי קוד שונים (שפת C) שעושים אותה מטרה.
איך אני יכול לבדוק מה יותר יעיל ומהיר? -
יש לי שני קטעי קוד שונים (שפת C) שעושים אותה מטרה.
איך אני יכול לבדוק מה יותר יעיל ומהיר?@searchnicks זה מיחשוב נטו? או שיש משתנים צדדיים שיכולים להשפיע על המהירות? כמו מהירות IO?
-
@searchnicks זה מיחשוב נטו? או שיש משתנים צדדיים שיכולים להשפיע על המהירות? כמו מהירות IO?
@yossiz מחישוב נטו
אותו נתוני לקוח
אותו קומפיילר
אותו מערכת
אותו משתמש.זה רק לבדיקה עצמית
-
@yossiz מחישוב נטו
אותו נתוני לקוח
אותו קומפיילר
אותו מערכת
אותו משתמש.זה רק לבדיקה עצמית
@searchnicks אתה בווינדוס או בלינוקס?
-
@searchnicks אתה בווינדוס או בלינוקס?
@yossiz בווינדוס
-
@yossiz בווינדוס
הסיפור הוא שאני ועוד חבר כתבנו קוד למטרה מסויימת.
והתעורר וויכוח איזה קוד יותר יעיל.האם יש כלים לאבחן את זה?
-
משהו כזה:
#include <windows.h> #include <stdio.h> void main() { // https://docs.microsoft.com/en-us/windows/win32/sysinfo/acquiring-high-resolution-time-stamps LARGE_INTEGER StartingTime, EndingTime, ElapsedMicroseconds; LARGE_INTEGER Frequency; int i; QueryPerformanceFrequency(&Frequency); QueryPerformanceCounter(&StartingTime); for (i = 0; i < 100; i++) { // your code } QueryPerformanceCounter(&EndingTime); ElapsedMicroseconds.QuadPart = EndingTime.QuadPart - StartingTime.QuadPart; ElapsedMicroseconds.QuadPart *= 1000000; ElapsedMicroseconds.QuadPart /= Frequency.QuadPart; printf("My code runs in %i microseconds", ElapsedMicroseconds.QuadPart / 100); QueryPerformanceCounter(&StartingTime); for (i = 0; i < 100; i++) { // his code } QueryPerformanceCounter(&EndingTime); ElapsedMicroseconds.QuadPart = EndingTime.QuadPart - StartingTime.QuadPart; ElapsedMicroseconds.QuadPart *= 1000000; ElapsedMicroseconds.QuadPart /= Frequency.QuadPart; printf("His code runs in %i microseconds", ElapsedMicroseconds.QuadPart / 100); }
נ. ב. אני לא כותב C, (מכיר קצת אבל לא יותר מזה). ברור שהקומפיילר היה צורח על הקוד שלי, אבל כתבתי אותו בלי לשאול את הקומפיילר לדעתו... האחריות עליך לאתר ולתקן את השגיאות...
-
D dovid העביר נושא זה מ-תכנות ב-