Transcript
Page 1: מבוא לאופטימיזציה של קוד

מבוא לאופטימיזציה של קודעידו גנדל, "הבייט הלבן"

2013כנס קהילת המייקרים הישראלית השני, אוגוסט

Page 2: מבוא לאופטימיזציה של קוד

מה זה אופטימיזציה?שינוי של קוד תוכנה כך שישיג, על גבי חומרה זהה, את אותן התוצאות החישוביות –

באופן יעיל יותר

מה זה "יעיל יותר"?מהירות ריצה משופרת ו/או חסכון במשאבים )זיכרון, סוללה...(

מה זה מעניין אותי?)התוכנה שלי עובדת וזה מה שחשוב, לא?(

כשתגדל, תבין!

Page 3: מבוא לאופטימיזציה של קוד

Photograph by Rama, Wikimedia Commons, Cc-by-sa-2.0-fr

Photograph by Jacob Appelbaum, Wikimedia Commons, Cc-by-sa-2.5

pcgamer.com

דונלד קנות'[The Art Of Computer Programming]

"אופטימיזציה בטרם זמנה היא שורש כל רע."

טוני הור[QuickSort]

"לא משנה עד כמה המחשב זול ומהיר - יהיה זול ומהיר עוד יותר להשתמש בו בצורה יעילה."

מייקל אבראש[Quake]

אופטימיזציה של הקוד הגולמי מביאה לשיפור של עד פי עשרה; של הרעיון הכללי – עד פי מאה.

Page 4: מבוא לאופטימיזציה של קוד

TFT-LCDהמשימה: ציור "קו אופק" בזמן אמתי – עם ארדואינו ומסך

ציור מלא76,800 Pixels = ~2 FPS

ציור שורות שהשתנו בלבד

38,400 Pixels = ~4 FPSציור הפרשים בלבד

4,451 Pixels = ~34.5 FPS

חלק ראשון: אופטימיזציה של הרעיון הכללי

Page 5: מבוא לאופטימיזציה של קוד

TFT-LCDהמשימה: ציור "קו אופק" בזמן אמתי – עם ארדואינו ומסך

חלק שני: אופטימיזציה של הקוד הגולמי )דוגמאות נבחרות(

התוצאות )אם האינטרנט יעבוד...(https://www.youtube.com/watch?v=FKUSZhqeixw

. בטיחות זה לחלשים1

. אופטימיזציה בהפוכה2Loop:For x = 1 to 50 Draw Pixel// 100 cycles

Loop unwinding:For x = 1 to 10 Draw Pixel Draw Pixel Draw Pixel Draw Pixel Draw Pixel// 60 cycles

?

Page 6: מבוא לאופטימיזציה של קוד

#include <util/delay.h>int main() { while (1) { PORTB += 32; _delay_ms(1000); }}

#include <util/delay.h>int main() { while (1) { _delay_ms(1000); PORTB += 32; }}

int led = 13;

void setup() { pinMode(led, OUTPUT); }

void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);}

1116 (3.6%)

196( 0.064%)

208 (0.068%)

ומה עם האופטימיזציה של הקומפיילר עצמו?

John William Waterhouse, Magic Circle, 1886

Page 7: מבוא לאופטימיזציה של קוד

יעילות

השקעה

אופטימיזציה אופטימלית

תודה!


Top Related