THE-MASTER פורסם 2005 באוקטובר 23 Share פורסם 2005 באוקטובר 23 אני מתכנת מתחיל וכרגע התחלתי בתור תוכנית ראשונה לכתוב תוכנית שתפתור סודוקו(אווו איזה משחק משעמם)...עכשיו חשוב לי מאוד היעילות בשביל המהירות אך מצד שני זה בא על חשבון הקוד הקריא.לדוגמא: אני רוצה לסרוק אם קיימת אפשרות יחידה בשורה אז אני יכול לייצר פונקצייה אחת שכוללת שלוש פונקציות של בדיקת שורה טור וריבוע ואז הקוד קריא או לעשות את הכל בפונקצייה אחת ובתוך כל הלולאות לעשות כל מיני קומבינציות כך שזה יהיה מאוד יעיל אך ספק כמה זמן יקח לבן אדם מן השורה לקרוא את הקוד.אז מה אתם אומרים להשאר במסגרת של פונקצייה בת עשר שורות לכל היותר וחלוקה לתתי משימות(כמובן כמה שיותר יעיל) או לוותר על זה ולדאוג ליעילות.אני יחסית בשלבי סיום של התוכנה ושאני מסתכל לאחור אפשר לוותר על כמה סריקות ולעשות כמה דברים בתוך לולאה.אני מניח שבהמשך בקטע הקימפול יהיו כמה טעויות אך נראה לי שזה יעבוד.... קישור לתוכן שתף באתרים אחרים More sharing options...
DoctorBurp פורסם 2005 באוקטובר 23 Share פורסם 2005 באוקטובר 23 תמיד עדיף קוד כמה שיותר קריא, עדיף שתתרגל לזה כבר מעכשיו, כך יהיה לך הרבה יותר נוח כשתעבוד עם פרוייקטים גדולים בעתיד.חוץ מזה, הפיצול של פונקציה אחת למספר תתי פונקציות לא יוריד לך מהביצועים, תאמין לי, עוד כמה פרמטרים במחסנית זה כסף קטן למעבד.לעומת זאת עם יצוץ לך רעיון עוד שבוע, עדיף שתוכל להסתכל על הקוד ולהבין מהר מה עשית, מאשר לשבור את הראש ולקוות שהשינוי החדש לא הורס כלום. קישור לתוכן שתף באתרים אחרים More sharing options...
BURTON פורסם 2005 באוקטובר 23 Share פורסם 2005 באוקטובר 23 למה אתה חושב שזה או זה או זה?פיצול של פונקציה אחת למספר תתי פונקציות לא יוריד לך מהביצועים^^^בדיוק קישור לתוכן שתף באתרים אחרים More sharing options...
THE-MASTER פורסם 2005 באוקטובר 23 מחבר Share פורסם 2005 באוקטובר 23 אני יסביר את העניין בתוספת הסבר.מדובר במערך תלת מימדי עכשיו אני יכול בתוך הלולאה הפנימית(מתוך השלושה) להתחייחס לערך שלה בתור טור בשביל סריקת השורה ובשביל שורה בשביל סריקת הטור ולמעשה אני יכתוב את יתר הפקודות באמצע וחסכתי לי די הרבה וזה יהיה פי 2 יעיל או שאני יכול לעשות שתי פונקציות לשורה ולטור ואז אני צריך לבצע את הסריקה פעמיים אך זה יהיה קריא בצורה יותר טובה. קישור לתוכן שתף באתרים אחרים More sharing options...
borg פורסם 2005 באוקטובר 23 Share פורסם 2005 באוקטובר 23 תמיד טוב לכתוב קוד כמה שיותר קריא, אמנם זה עשוי לבוא על חשבון של יעילות, אבל לא נראה לי שתרגיש את זה.אם אתה רוצה, אז אחרי שתכתוב את התוכנית עם קוד קריא, תכתוב תוכנית נוספת עם קוד יעיל ככל האפשר ותבדוק אם יש הבדל מורגש בביצועים. קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2005 באוקטובר 23 Share פורסם 2005 באוקטובר 23 אם זה רק פי 2(או פי כל מספר אחר) אז לא מחשיבים. קישור לתוכן שתף באתרים אחרים More sharing options...
borg פורסם 2005 באוקטובר 23 Share פורסם 2005 באוקטובר 23 אם זה רק פי 2 [glow=red,2,300](או פי כל מספר אחר)[/glow] אז לא מחשיבים. אתה מתכוון לרמת יעילות של פי 2, או לזמן ביצוע ארוך פי 2? :-\ מה זה אמור להביע "פי כל מספר אחר"? מתי כן מחשיבים? : קישור לתוכן שתף באתרים אחרים More sharing options...
Boomerang פורסם 2005 באוקטובר 24 Share פורסם 2005 באוקטובר 24 אם זה רק פי 2(או פי כל מספר אחר) אז לא מחשיביםאני לא יודע מי זה "הם" שמחשיבים או לא מחשיבים, אבל אני יודע שלי מאוד אכפת אם משחק שאני מריץ יעבוד ב- 20 פריימים לשניה או 40 פריימים.לאופטימיזציה יש שני חוקים:1. Don't do it2. Don't do it YETכלומר, אל תנסה לשפר ביצועים לפני שהתוכנית עובדת.בדר"כ פיצול של לולאות לפונקציות שונות לא ממש עוזר לקריאות כי זה מפזר לך את האלגוריתם (אפשר להתווכח על זה, אבל כשמדובר באלגוריתם פשוט יחסית ובטיפוס נתונים של מערך, לא נראה לי שתשיג קריאות יותר טובה אם תפצל אותה)קריאה לפונקציה רגילה (בייחוד אם היא ויראטואלית) מספר גדול של פעמים (למשל עבור כל צעד בלולאה) יהיה מורגש. עבור פונקציות של שורה או שתיים, רוב הזמן הולך על הקריאה לפונקציה והחזרה ממנה.למרות זאת קריאה לפונקציה inline לא עולה כלום (כי זו לא באמת קריאה לפונקציה). קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2005 באוקטובר 24 Share פורסם 2005 באוקטובר 24 אני מתכוון לסדרי זמן ריצה.n=o(n)2n=o(n)זה הכל.כך שאם תריץ כמה לולאות אחת אחרי השניה לא יהייה הבדל משמעותי בביצועים.לפי דעתי הפיצול הוא כדאי. קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2005 באוקטובר 24 Share פורסם 2005 באוקטובר 24 מה לעשות, בעולם האמיתי סדר גודל זמן ריצה זה לא הכל.ותכנית שייקח לה שעתיים לרוץ תהיה הרבה פחות טובה מתכנית שיקח לה רק שעה. קישור לתוכן שתף באתרים אחרים More sharing options...
THE-MASTER פורסם 2005 באוקטובר 25 מחבר Share פורסם 2005 באוקטובר 25 פה הקריאות פוגע בהכרח ביעילות כי יש לי שלושה לולאות(9*9*9) אחת בתוך השנייה והפונקצייה חייבת לעבוד על מחזור שלם של הלולאה הפנימית ולכן אם אני משתמש בשני פונקציות מספר הלולאות יהיה (9*9*(9*2)) הדרך היחידה שלי להשאר על 9*9*9 הוא פשוט לבצע את זה בלי פונקציות.......התוכנית הזאת אני מניח תבצע עשרות אלפי מחזורים של לולאה(סריקת כל השורות הטורים לכל האפשרויות וכל דרכי הפתרון השונות ועד הרקורסיה בסוף לניחוש במידה ודרכי הפתרון לא מהוות פתרון זה המוןןןןןןןןןן לולאות).אפשר להניח לפני כמה זמן בערך יקח לתוכנית הזאת לרוץ????? קישור לתוכן שתף באתרים אחרים More sharing options...
Holy פורסם 2005 באוקטובר 25 Share פורסם 2005 באוקטובר 25 אני מתכוון לסדרי זמן ריצה.n=o(n)2n=o(n)זה הכל.כך שאם תריץ כמה לולאות אחת אחרי השניה לא יהייה הבדל משמעותי בביצועים.לפי דעתי הפיצול הוא כדאי.כל זה טוב ויפה בתאוריהאבל במציאות שיש לך פתרון שרץ n ופתרון שרץ 1000n עדיף תמיד את ה-n.אם ל-n לוקח 10 שניות לרוץ תחשוב כמה זמן לוקח ל-1000n.בכל מקרה כל פיתרון שהוא לא יעשה יהיה O(1) כי מרחב הבעיה סופי (n=3). קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2005 באוקטובר 25 Share פורסם 2005 באוקטובר 25 תחשוב על דרך אחרת לפתרון.אתה צריך לעשות חיתוך בין כמה קבוצות. קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.