ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
LemonLimeלא בפורום כעת ת.הצטרפות: 04/08/2008 · הודעות: 663 · מיקום: גורגוניה
 

הודעה פורסם: 09/06/2009 - 22:49
נושא ההודעה: אופטימיזציה של bash scripts

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

* עיקר זמן הריצה מוקדש להרצה של תהליכים חיצוניים (ולא לפיענוח של הסקריפט, טיפול במשתנים או במחרוזות, יצירת קבצים, ניהול הפניות, או דברים אחרים שהייתי רגיל אליהם מ-C...). זה אומר ש:
- pipes זה דבר מאוד יקר.
- אם אתם מבצעים פעולות על מחרוזות, כדאי לשמור אותן בקבצים זמניים (שנוצרים עם tempfile) ולהעביר את שם הקובץ לפקודות במקום להשתמש ב-echo עם pipe. כדאי ליצור בתחילת הסקריפט קובץ זמני אחד או יותר ולהשתמש בו לאורך הסקריפט (על פני ליצור קובץ זמני כל פעם שצריך...).
* אם אתם לא כותבים לטרמינל בתדירות גבוהה (כזאת שגורמת לו "להתנדנד"), כתיבה של מחרוזות ארוכות מהירה יותר מכתיבה של מחרוזות קצרות (לא, זאת לא טעות... וזה מביא לשיפור משמעותי - 10 עד 30 אחוז).

אתם מוזמנים להוסיף...
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 10/06/2009 - 00:58
נושא ההודעה:

אם הסקריפט דורש אופטימיזציה לזמן הביצוע, יכול להיות ששוה לשכתב אותו בשפה אחרת.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
LemonLimeלא בפורום כעת ת.הצטרפות: 04/08/2008 · הודעות: 663 · מיקום: גורגוניה
 

הודעה פורסם: 10/06/2009 - 03:12
נושא ההודעה:

לא בהכרח...
יש הבדל די גדול בין סקריפט שרץ במשך דקה לסקריפט שרץ במשך כמה שניות או פחות, ולפעמים זה מספיק...
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/06/2009 - 22:57
נושא ההודעה:

ניתן לוותר על echo גם בעזרת here strings. דוגמא:
קוד:

mounts="$(mount | awk '{print $1,$5}')"

# using echo
# ext3_mounts=$(echo "$mounts" | grep 'ext3$')
# nfs_mounts=$(echo "$mounts" | grep 'nfs$')

# using here-strings
ext3_mounts=$(grep 'ext3$' <<<"$mounts")
nfs_mounts=$(grep 'nfs$' <<<"$mounts")


bash שפה חזקה
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
LemonLimeלא בפורום כעת ת.הצטרפות: 04/08/2008 · הודעות: 663 · מיקום: גורגוניה
 

הודעה פורסם: 12/06/2009 - 03:22
נושא ההודעה:

תודה, הכרתי את זה ולא חשבתי לנסות...
מבדיקות שעשיתי עכשיו עולה ששימוש ב-here strings כמעט זהות מבחינת זמן ריצה לשימוש ב-echo עם pipe, כלומר בערך פי 2 משמירה לקובץ ושימוש בו במקום... כנראה בגלל הצורך בהקצאות זיכרון למשתנה שלתוכו שומרים את המחרוזת...
עוד גיליתי עכשיו שאם לא מוציאים פלט בכלל, התוצאה איטית ב-15 אחוז מאשר הוצאה של פלט בתדירות יחסית גבוהה (אבל לא כזאת שגורמת לו לרצד בטרמינל)... כלומר, זמן הריצה האידיאלי מהבחינה הזאת מושג כשכותבים פלט בתדירות הגבוהה ביותר שלא גורמת לו לרצד והפלט מורכב ממחרוזות ארוכות יחסית... אין לי מושג מה הסיבה, אבל ככה זה...
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. LemonLime
  2. אורח [צפריר]
  3. LemonLime
  4. אורח
  5. LemonLime