Download - מבוא לאופטימיזציה של קוד
![Page 1: מבוא לאופטימיזציה של קוד](https://reader036.vdocuments.net/reader036/viewer/2022062521/56815685550346895dc432e1/html5/thumbnails/1.jpg)
מבוא לאופטימיזציה של קודעידו גנדל, "הבייט הלבן"
2013כנס קהילת המייקרים הישראלית השני, אוגוסט
![Page 2: מבוא לאופטימיזציה של קוד](https://reader036.vdocuments.net/reader036/viewer/2022062521/56815685550346895dc432e1/html5/thumbnails/2.jpg)
מה זה אופטימיזציה?שינוי של קוד תוכנה כך שישיג, על גבי חומרה זהה, את אותן התוצאות החישוביות –
באופן יעיל יותר
מה זה "יעיל יותר"?מהירות ריצה משופרת ו/או חסכון במשאבים )זיכרון, סוללה...(
מה זה מעניין אותי?)התוכנה שלי עובדת וזה מה שחשוב, לא?(
כשתגדל, תבין!
![Page 3: מבוא לאופטימיזציה של קוד](https://reader036.vdocuments.net/reader036/viewer/2022062521/56815685550346895dc432e1/html5/thumbnails/3.jpg)
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: מבוא לאופטימיזציה של קוד](https://reader036.vdocuments.net/reader036/viewer/2022062521/56815685550346895dc432e1/html5/thumbnails/4.jpg)
TFT-LCDהמשימה: ציור "קו אופק" בזמן אמתי – עם ארדואינו ומסך
ציור מלא76,800 Pixels = ~2 FPS
ציור שורות שהשתנו בלבד
38,400 Pixels = ~4 FPSציור הפרשים בלבד
4,451 Pixels = ~34.5 FPS
חלק ראשון: אופטימיזציה של הרעיון הכללי
![Page 5: מבוא לאופטימיזציה של קוד](https://reader036.vdocuments.net/reader036/viewer/2022062521/56815685550346895dc432e1/html5/thumbnails/5.jpg)
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: מבוא לאופטימיזציה של קוד](https://reader036.vdocuments.net/reader036/viewer/2022062521/56815685550346895dc432e1/html5/thumbnails/6.jpg)
#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: מבוא לאופטימיזציה של קוד](https://reader036.vdocuments.net/reader036/viewer/2022062521/56815685550346895dc432e1/html5/thumbnails/7.jpg)
יעילות
השקעה
אופטימיזציה אופטימלית
תודה!