כותב |
|
Leak משתמש מתחיל


הצטרף / הצטרפה: 01 September 2006
משתמש: מנותק/ת הודעות: 36
|
נשלח בתאריך: 10 October 2006 בשעה 17:27 | | IP רשוּם
|
|
|
|
מה הדרך היעילה ביותר להשתמש באופרטור ההצבה, במקרה של טיפול במצביע? (תתעלמו מזה שהמשתנה _p בpublic, עשיתי את זה ככה בשביל להקל על ההבנה). בכל מקרה, הקטעי קוד הבאים:
קוד:
1. cls& cls::operator=(const cls& c) { if (this == &c) return *this; delete p_; cls* pc = new cls (*c._p); p_ = pc; return *this; } |
|
|
קוד:
2. cls& cls::operator=(const cls& c) { cls* pc = new cls (*c._p); delete p_; p_ = pc; return *this; } |
|
|
הייתה לי התלבטות בקשר למה שיותר יעיל. אני בדר"כ הייתי משתמש בדרך הראשונה, בשביל לעשות את הקוד יותר יעיל במקרה של "הצבה עצמית", אבל מתכנת ותיק יותר הראה לי דרך שתיהיה יותר יעילה במקרה שאין "הצבה עצמית" (הדרך השניה). והוא ניסה להוכיח את זה בכך שרוב הפעמים אין הצבה עצמית, משום שאף אחד לא מציב בכוונה את אותו משתנה, ולכן הדרך שאני כתבתי תיהיה פחות יעילה מתי שאין הצבה עצמית, שזה רוב הפעמים.. (כנראה 99 אחוז מהזמן). אז רציתי לשאול מה דעתכם? ובמה אתם משתמשים במקרה של אופרטור הצבה ?
__________________ True knowledge exists in knowing that you know nothing.
Nature has given us two ears, two eyes, and but one tongue-to the end that we should hear and see more than we speak.
|
חזרה לתחילת העמוד |
|
|
Fate פורומיסט על


הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת הודעות: 571
|
נשלח בתאריך: 10 October 2006 בשעה 19:28 | | IP רשוּם
|
|
|
|
יכול להיות שאני לא מבין משהו... אבל הטיעון שלו שזה יותר יעיל זה שמשתמשים בהצבה הזאת (בפונקציה) פחות?? יעילות לא קשור לכמות הפעמים שמשתמשים בפונקציה אלא בזמן ריצה שלה... ולפי דעתי אין הבדל ביעילות בכלל, בגלל שזה כלכך דק שבכל מקרה הקומפילר יסדר את זה איך שבא לו...
|
חזרה לתחילת העמוד |
|
|
Leak משתמש מתחיל


הצטרף / הצטרפה: 01 September 2006
משתמש: מנותק/ת הודעות: 36
|
נשלח בתאריך: 10 October 2006 בשעה 20:58 | | IP רשוּם
|
|
|
|
Fate כתב:
יכול להיות שאני לא מבין משהו... אבל הטיעון שלו שזה יותר יעיל זה שמשתמשים בהצבה הזאת (בפונקציה) פחות?? יעילות לא קשור לכמות הפעמים שמשתמשים בפונקציה אלא בזמן ריצה שלה... ולפי דעתי אין הבדל ביעילות בכלל, בגלל שזה כלכך דק שבכל מקרה הקומפילר יסדר את זה איך שבא לו...
|
|
|
יש הבדל של יעילות, קטן, אבל יש. במקרה מס' 2 אין בדיקה של "הצבה עצמית", לכן אם תיהיה הצבה עצמית אז ההצבה תיהיה איטית יותר, ואם לא תיהיה הצבה עצמית אז זה יהיה מהיר יותר מאשר הראשון (2 יותר מהר מ1). במקרה של הצבה עצמית (1 יהיה יותר מהיר מ2). בגלל זה אני רוצה לדעת במה כדאי להשתמש.. ?
__________________ True knowledge exists in knowing that you know nothing.
Nature has given us two ears, two eyes, and but one tongue-to the end that we should hear and see more than we speak.
|
חזרה לתחילת העמוד |
|
|
Fate פורומיסט על


הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת הודעות: 571
|
נשלח בתאריך: 10 October 2006 בשעה 23:45 | | IP רשוּם
|
|
|
|
אהה הבנתי, אין לי מושג, השאלה זה האם זה יעבוד גם כשאתה עושה הצבה על עצמך בשני המקרים? אם כן קח את זה שלא בודק... אבל כנראה שלא, אז לא עדיף ללכת על בטוח?
|
חזרה לתחילת העמוד |
|
|
Leak משתמש מתחיל


הצטרף / הצטרפה: 01 September 2006
משתמש: מנותק/ת הודעות: 36
|
נשלח בתאריך: 11 October 2006 בשעה 12:27 | | IP רשוּם
|
|
|
|
Fate כתב:
אהה הבנתי, אין לי מושג, השאלה זה האם זה יעבוד גם כשאתה עושה הצבה על עצמך בשני המקרים? אם כן קח את זה שלא בודק... אבל כנראה שלא, אז לא עדיף ללכת על בטוח?
|
|
|
שניהם יעבדו בשני המקרים של הצבה שהם: 1. הצבה עצמית 2. הצבה רגילה ואף פעם אתה לא תעשה הצבה עצמית בכוונה x=x ,המצב הזה יווצר ללא כוונה, לדוגמא במקרים שיש הרבה מצביעים/ייחוסים בתוכנית.
__________________ True knowledge exists in knowing that you know nothing.
Nature has given us two ears, two eyes, and but one tongue-to the end that we should hear and see more than we speak.
|
חזרה לתחילת העמוד |
|
|
Fate פורומיסט על


הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת הודעות: 571
|
נשלח בתאריך: 11 October 2006 בשעה 13:17 | | IP רשוּם
|
|
|
|
אם שניהם יעבדו בכל המקרים הקיימים (גם אלה שלא קורים הרבה)... אז קח את זה שאין לו IF באמצע...
|
חזרה לתחילת העמוד |
|
|