DCSIMG
December 2007 - Posts - Dotmad (on .Net)

Dotmad (on .Net)

Just Another Web 5.0 Blog

Podcasts

Blogroll

December 2007 - Posts

עלות/תועלת בשיפור ביצועים

תוך כדי כתיבת התגובה לפוסט של אודי נתקלתי בפוסט של גדי על הרושם שלו מההרצאה, ובשרשרת התגובות שהתפתחה בנושא של אופטימיזציה לאפליקציות קריטיות מבחינת יישומים.

הטענה של גדי הייתה שאם משתמשים במלוא השירותים שWCF מציע התקורה על פני שימוש במחלקות קלאסיות אינה גבוהה, לכן כדאי להשתמש בפיתרון הנ"ל:

"המטרה של מפתח היא לפתור בעיה. אם המתח מצליח לכתוב קוד שפותר את הבעיה בזמן נאות (ונאות זו מילת המפתח כאן), הוא השיג את המטרה. אם הביצועים מספיקים למערכת, ואם זמן התגובה נאות (ושוב נאות זו מילת המפתח כאן), כל השקעה של מאמץ בשיפור הביצועים היא בזבוז זמן פיתוח. זה עובד מספיק טוב, אז למה אתה מקלקל."

אשר התנגד לגישה הזו, בטענה שבמערכות הקרובות לזמן אמת אין "תקורה זניחה", ושגם שיפור של 10% בביצועים במערכת כזו יכול להיות משמעותי:

"גם אם (אני מצטט)  "זה עובד מספיק טוב" , אבל ניתן לשפר את ביצועי התוכנה ב 10% וזה יוסיף (לדוגמא) 5% ליעילות המבצעית של המערכת, זה שווה וצריך לעשות את זה"

בתור אדם המכיר מערכות שאשר מתייחס אליהן אני לא בטוח שאני מסכים לקביעה הנ"ל - תמיד צריך לעשות שיקול של עלות/תועלת בכל פיתוח שהוא.
ויותר מכך, הלקוחות של מערכות כאלה נוטים להיות פחות סבלניים לעיכובים, והיכולת שלהם "לכופף ידיים" לחברה היא גדולה משמעותית מאשר בשווקים אחרים.

כבר נתקלתי בלא מעט מקרים וחברות בהן שלט עיקרון הNIH מתוך שיקולי ביצועים, והוביל להשקעה של שנות אדם על המצאה מחדש של תשתיות קיימות, למען שיפור מוטל בספק של ביצועים, ובד"כ הזמן הוכיח שההשקעה הנ"ל הייתה שגוייה.
לדוגמה, כיום לא הייתי מפתח תשתית תקשורת, אלא משתמש ב-WCF, גם אם קיים מחיר כלשהו בביצועים.

במקרה של הוויכוח בין גדי לאשר השאלה שצריכה להישאל היא האם יש שימוש ביכולות שהתשתית (WCF במקרה הזה) מספקת, וכמה זמן היה לוקח לפתח תשתית מקבילה אבל עם ביצועים משופרים ב-10%. אם התשובה לחלק הראשון היא חיובית, והתשובה לחלק השני נמדדת בחודשי או שנות אדם - הייתי בוחר בWCF ללא היסוס.

WCF Everywhere? Worth some consideration

Sadly I missed Juval Lowy's WCF lecture last Thursday, but I read Udi Dahan's blog post regarding the lecture.
It seems Juval is preaching the use of WCF for every inter-class operation, even on the same computer, as WCF is better designed than plain code, and Udi objects to the idea due to possible performance consequences.
One of the main reasons for Udi's objection was a demo Juval ran in which the communication output was 200 calls per second - not very high.
But as Gadi already commented, this was done using security, encryption, exception handling and other "services" which are not necessarily present in day-to-day inner-process method calls.
This also lead me to search for again benchmarks for WCF, and it turns out you can reach more than 5000 calls per second with it.
 
So use WCF for every inter-class operation? I think not, since it basically break your entire code to services, and SOA requires careful planning.
On the other hand, I would use WCF for every cross-process operation, both local and remote.
Posted: Dec 30 2007, 08:50 PM by Dotmad | with 1 comment(s)
תגים:

חברת סטרטאפ צעירה מחפשת מפתח קליינט ווב

חברה סטרטאפ שחבר עובד בה מחפשת עובד:
 
Java programmer which with the following knowledge:
 
1. JSP, Servlets, MVC frameworks (EJB3 familiarity is an advantage)
2. HTML, DHTML, Javascript, Ajax
3. Knowldege of DB basics(MySQL or any alike)
4. Experience in working with Linux (not linux scripting) - An advantage
 
Send CV to yair.zaslavsky@gmail.com

Facebook usage

I took a look at the Facebook countries stats, and it got me curious about possible correlation between Internet users and Facebook users, so I collected Internet users stats and came up with this (absolute numbers are in Thousands):

Country Facebook users Internet users Facebook usage
Canada 6650 22000 30.23%
Norway 822 3140 26.18%
UK 6825 37600 18.15%
Lebanon 169 950 17.79%
Sweden 960 6890 13.93%
Australia 1920 15300 12.55%
South Africa 603 5100 11.82%
Singapore 286 2421 11.81%
UAE 196 1708 11.48%
Turkey 1633 16000 10.21%
US 18071 210575 8.58%
Ireland 167 2060 8.11%
New Zealand 250 3200 7.81%
Colombia 488 6700 7.28%
Egypt 396 6000 6.60%
Israel 209 3700 5.65%
Switzerland 144 5097 2.83%
Saudi Arabia 120 4700 2.55%
France 771 32925 2.34%
Dominican Republic 32 1500 2.13%
Mexico 435 22700 1.92%
Netherlands 139 12060 1.15%
Malaysia 169 14904 1.13%
Spain 223 19765 1.13%
Pakistan 117 12000 0.98%
Germany 366 50426 0.73%
India 333 60000 0.56%
Italy 161 31481 0.51%
Korea 55 34120 0.16%
Japan 108 87540 0.12%
China 132 162000 0.08%