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

Post on 20-Mar-2016

54 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

מבוא לאופטימיזציה של קוד. עידו גנדל, "הבייט הלבן". כנס קהילת המייקרים הישראלית השני, אוגוסט 2013. מה זה אופטימיזציה?. שינוי של קוד תוכנה כך שישיג, על גבי חומרה זהה, את אותן התוצאות החישוביות – באופן יעיל יותר. מה זה "יעיל יותר"?. מהירות ריצה משופרת ו/או חסכון במשאבים (זיכרון, סוללה...). - PowerPoint PPT Presentation

TRANSCRIPT

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

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

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

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

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

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

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

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]

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

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

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

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

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

4,451 Pixels = ~34.5 FPS

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

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

?

#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

יעילות

השקעה

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

תודה!

top related