<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: The root of all evil</title>
	<atom:link href="http://firefang.net/blog/882/feed" rel="self" type="application/rss+xml" />
	<link>http://firefang.net/blog/882</link>
	<description>May your sockets never timeout</description>
	<pubDate>Tue, 02 Dec 2008 08:32:01 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7-RC1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: מחשבות, מחשבים, ושאר דברי בלע &#187; Blog Archive &#187; MySQL optimization</title>
		<link>http://firefang.net/blog/882/comment-page-1#comment-7153</link>
		<dc:creator>מחשבות, מחשבים, ושאר דברי בלע &#187; Blog Archive &#187; MySQL optimization</dc:creator>
		<pubDate>Sun, 06 Jul 2008 06:01:06 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/882#comment-7153</guid>
		<description>[...] כמה שבועות פרסמתי פוסט על אופטימיזציות. הנה ההמשך. דוגמא מעשית, שיפור ביצועים [...]</description>
		<content:encoded><![CDATA[<p>[...] כמה שבועות פרסמתי פוסט על אופטימיזציות. הנה ההמשך. דוגמא מעשית, שיפור ביצועים [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: יונתן אורלב</title>
		<link>http://firefang.net/blog/882/comment-page-1#comment-7090</link>
		<dc:creator>יונתן אורלב</dc:creator>
		<pubDate>Wed, 18 Jun 2008 10:15:23 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/882#comment-7090</guid>
		<description>"
as you probably know checking that the number in the registry is not 0 is a much faster check the to check number i against any other number (10000000 in this case).
"

אני מסכים עם עמרי לגבי יחסי הזמנים, אבל על העובדה הזו לא חשבתי. זו אופטימיזיציה מעניינת, אם כי אולי לא משמעותית ברובם הגדול של המקרים. אני גם חושב שאופטימיזציות מעין אלה קומפיילרים טובים אמורים לעשות לבד, אבל זה לא דבר שאני מבין בו.</description>
		<content:encoded><![CDATA[<p>&#8221;<br />
as you probably know checking that the number in the registry is not 0 is a much faster check the to check number i against any other number (10000000 in this case).<br />
&#8221;</p>
<p>אני מסכים עם עמרי לגבי יחסי הזמנים, אבל על העובדה הזו לא חשבתי. זו אופטימיזיציה מעניינת, אם כי אולי לא משמעותית ברובם הגדול של המקרים. אני גם חושב שאופטימיזציות מעין אלה קומפיילרים טובים אמורים לעשות לבד, אבל זה לא דבר שאני מבין בו.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: עמרי</title>
		<link>http://firefang.net/blog/882/comment-page-1#comment-7089</link>
		<dc:creator>עמרי</dc:creator>
		<pubDate>Wed, 18 Jun 2008 07:08:46 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/882#comment-7089</guid>
		<description>מוטי, אני מסכים שעדיף להשתמש בפרופיילר אם יש פרופיילר זמין לסביבה שלך, דבר די נדיר אצלי.
(בין אם זה פיתוח לסלולרי, ואז אף פרופיילר לא ירוץ על הטלפון, או פיתוח מרובה סביבות כמו WEB שכולל PHP, MySQL וJavaScript באותה אפליקציה)

מוטי, לגבי הלופ:
על הזיין, זו דוגמא נגדית. :)
אם אתה מודד משהו שיושפע מהלופ עצמו קרוב לוודאי שאתה מודד פעולה שלוקחת כל כך מעט זמן שגם ככה חבל על האנרגיה של להתעסק איתה.</description>
		<content:encoded><![CDATA[<p>מוטי, אני מסכים שעדיף להשתמש בפרופיילר אם יש פרופיילר זמין לסביבה שלך, דבר די נדיר אצלי.<br />
(בין אם זה פיתוח לסלולרי, ואז אף פרופיילר לא ירוץ על הטלפון, או פיתוח מרובה סביבות כמו WEB שכולל PHP, MySQL וJavaScript באותה אפליקציה)</p>
<p>מוטי, לגבי הלופ:<br />
על הזיין, זו דוגמא נגדית. <img src='http://firefang.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
אם אתה מודד משהו שיושפע מהלופ עצמו קרוב לוודאי שאתה מודד פעולה שלוקחת כל כך מעט זמן שגם ככה חבל על האנרגיה של להתעסק איתה.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: מוטי מונדיאנו</title>
		<link>http://firefang.net/blog/882/comment-page-1#comment-7088</link>
		<dc:creator>מוטי מונדיאנו</dc:creator>
		<pubDate>Tue, 17 Jun 2008 16:51:41 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/882#comment-7088</guid>
		<description>First I believe that the best way to do optimization (or more to the point - to know what to focus on when you have to optimize memory or runtime) is to run a profiling tool (jpob, jprofiler....) on a "real application scenarios". Then when you had drilled it down to few "flows/functions" write a unitest and possibly run it in a loop (so that you don't have to run a profiler every time). 
Also the loop in your code is itself not optimized (and thus is adds to the "average" time more that it has to). To optimize your loop do it like - for(int i = 1000000 ; i &#62; 0 ; i--) as you probably know checking that the number in the registry is not 0 is a much faster check the to check number i against any other number (10000000 in this case).</description>
		<content:encoded><![CDATA[<p>First I believe that the best way to do optimization (or more to the point - to know what to focus on when you have to optimize memory or runtime) is to run a profiling tool (jpob, jprofiler&#8230;.) on a &#8220;real application scenarios&#8221;. Then when you had drilled it down to few &#8220;flows/functions&#8221; write a unitest and possibly run it in a loop (so that you don&#8217;t have to run a profiler every time).<br />
Also the loop in your code is itself not optimized (and thus is adds to the &#8220;average&#8221; time more that it has to). To optimize your loop do it like - for(int i = 1000000 ; i &gt; 0 ; i&#8211;) as you probably know checking that the number in the registry is not 0 is a much faster check the to check number i against any other number (10000000 in this case).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nitzan Brumer</title>
		<link>http://firefang.net/blog/882/comment-page-1#comment-7087</link>
		<dc:creator>Nitzan Brumer</dc:creator>
		<pubDate>Tue, 17 Jun 2008 08:49:53 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/882#comment-7087</guid>
		<description>אני לא לגמרי מסכים עם:"הבעיה עם שיפור ביצועים היא שהוא מעלה את מורכבות הקוד, מה שפוגע אוטומטית בקלות התחזוקה, ומעלה את הקושי בשמירה על נכונות"
אחד הדברים שאני הכי אוהב בפיתוח OO זה השימוש במתודות והעובדה שניתן למקסם פעילות של מתודה מבלי שהיא תשפיע על צורת הקריאה ותחזיר אותה תשובה. הרבה פעמים, כשאני מפתח אני יוצר מבנה ראשוני שהוא יחסית מאוד עמוס (שימוש במשתני עזר, שימוש בלולאות ארוכות וכ') - מסוג הפעולות שמאוד מקילות עלי בכתיבה ובהבנה של הקוד, אבל עלולות להיות מאוד בזבזניות לאחר מכן. לפעמים מיקסום של מתודה שכזו יכול להשפיע בצורה משמעותית על תפקוד הקוד מבלי להשפיע על המורכבות שלו (כי הפניה למתודה נעשית באותה הדרך והתשובה המוחזרת מוחזרת באותו האופן, רק ההליך הפנימי משתנה). 
לצורך העיניין, לפעמים זה דורש מעבר למבנה נתונים נוח יותר, מציאה של סיבוכיות קטנה יותר ושימוש ברקורסיות (שעלולות להיות יותר גזלניות בזיכרון אבל יותר מהירות). בשורה התחתונה, זה מקצר את זמן הפעולה של המתודה, אבל לא בהכרח מגדיל את הסיבוכיות של התוכנה. 
עם זאת, אני בהחלט מסכים עם הצורך במציאת "מועמדים" לשיפור. אין טעם למקסם מתודה שנקראת פעם אחת בכל הריצה של התוכנה לצורך העניין.</description>
		<content:encoded><![CDATA[<p>אני לא לגמרי מסכים עם:&#8221;הבעיה עם שיפור ביצועים היא שהוא מעלה את מורכבות הקוד, מה שפוגע אוטומטית בקלות התחזוקה, ומעלה את הקושי בשמירה על נכונות&#8221;<br />
אחד הדברים שאני הכי אוהב בפיתוח OO זה השימוש במתודות והעובדה שניתן למקסם פעילות של מתודה מבלי שהיא תשפיע על צורת הקריאה ותחזיר אותה תשובה. הרבה פעמים, כשאני מפתח אני יוצר מבנה ראשוני שהוא יחסית מאוד עמוס (שימוש במשתני עזר, שימוש בלולאות ארוכות וכ&#8217;) - מסוג הפעולות שמאוד מקילות עלי בכתיבה ובהבנה של הקוד, אבל עלולות להיות מאוד בזבזניות לאחר מכן. לפעמים מיקסום של מתודה שכזו יכול להשפיע בצורה משמעותית על תפקוד הקוד מבלי להשפיע על המורכבות שלו (כי הפניה למתודה נעשית באותה הדרך והתשובה המוחזרת מוחזרת באותו האופן, רק ההליך הפנימי משתנה).<br />
לצורך העיניין, לפעמים זה דורש מעבר למבנה נתונים נוח יותר, מציאה של סיבוכיות קטנה יותר ושימוש ברקורסיות (שעלולות להיות יותר גזלניות בזיכרון אבל יותר מהירות). בשורה התחתונה, זה מקצר את זמן הפעולה של המתודה, אבל לא בהכרח מגדיל את הסיבוכיות של התוכנה.<br />
עם זאת, אני בהחלט מסכים עם הצורך במציאת &#8220;מועמדים&#8221; לשיפור. אין טעם למקסם מתודה שנקראת פעם אחת בכל הריצה של התוכנה לצורך העניין.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: יונתן אורלב</title>
		<link>http://firefang.net/blog/882/comment-page-1#comment-7086</link>
		<dc:creator>יונתן אורלב</dc:creator>
		<pubDate>Tue, 17 Jun 2008 08:28:17 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/882#comment-7086</guid>
		<description>זהו, שהיה לי נדמה שזה לא נכון תכנותית, אבל כנראה שלא הבנתי נכון. בכל אופן החלפת את הקוד ועכשיו זה הרבה יותר ברור.</description>
		<content:encoded><![CDATA[<p>זהו, שהיה לי נדמה שזה לא נכון תכנותית, אבל כנראה שלא הבנתי נכון. בכל אופן החלפת את הקוד ועכשיו זה הרבה יותר ברור.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: עמרי</title>
		<link>http://firefang.net/blog/882/comment-page-1#comment-7085</link>
		<dc:creator>עמרי</dc:creator>
		<pubDate>Tue, 17 Jun 2008 08:13:32 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/882#comment-7085</guid>
		<description>זה נכון תכנותית, אבל אולי לא הבחירה הכי טובה של שמות משתנים.
מתקן.</description>
		<content:encoded><![CDATA[<p>זה נכון תכנותית, אבל אולי לא הבחירה הכי טובה של שמות משתנים.<br />
מתקן.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: יונתן אורלב</title>
		<link>http://firefang.net/blog/882/comment-page-1#comment-7084</link>
		<dc:creator>יונתן אורלב</dc:creator>
		<pubDate>Tue, 17 Jun 2008 08:10:27 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/882#comment-7084</guid>
		<description>וואו, מעולה!

זה נושא מרתק, ביחוד כי הוא חל כל כל מי שמפתח אפליקציות, ולדעתי בעיקר אפליקציות שמשתמשות בישומים/ספריות חיצוניות משמעותיות, כמו למשל התממשקות עם MySQL: לכן זה גם רלוונטי גם לסקריפטינג למשל.

ואני מסכים עם מה שרשמת, כי לדעתי לפחות, ואלא אם כן אתה מפתח ישומי זמן אמת, איטיות תנבע מטעות פטאלית או אי שימוש נכון בספרייה, או משימוש לא מתאים באלגוריתם, ולא איזה כיוונון קטן בקוד. זה בגלל שאת השימוש במעבד לא מבצע הקוד שהמתכנת כתב, אלא הספריות שהוא משתמש בהן (שהוא קורה להן).

הערה: אני מבין למה הכתוונת ב- "int later = time() - now;", אבל נראה לי שזה לא כתוב בסדר הנכון, כנראה בכלל הפלטפורמה ולא בגלל שלא רשמת נכון. האם אני צודק?

אז אני ממתין לפוסטים הבאים.</description>
		<content:encoded><![CDATA[<p>וואו, מעולה!</p>
<p>זה נושא מרתק, ביחוד כי הוא חל כל כל מי שמפתח אפליקציות, ולדעתי בעיקר אפליקציות שמשתמשות בישומים/ספריות חיצוניות משמעותיות, כמו למשל התממשקות עם MySQL: לכן זה גם רלוונטי גם לסקריפטינג למשל.</p>
<p>ואני מסכים עם מה שרשמת, כי לדעתי לפחות, ואלא אם כן אתה מפתח ישומי זמן אמת, איטיות תנבע מטעות פטאלית או אי שימוש נכון בספרייה, או משימוש לא מתאים באלגוריתם, ולא איזה כיוונון קטן בקוד. זה בגלל שאת השימוש במעבד לא מבצע הקוד שהמתכנת כתב, אלא הספריות שהוא משתמש בהן (שהוא קורה להן).</p>
<p>הערה: אני מבין למה הכתוונת ב- &#8220;int later = time() - now;&#8221;, אבל נראה לי שזה לא כתוב בסדר הנכון, כנראה בכלל הפלטפורמה ולא בגלל שלא רשמת נכון. האם אני צודק?</p>
<p>אז אני ממתין לפוסטים הבאים.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
