02-02-2010, 17:25
|
|
|
חבר מתאריך: 30.07.05
הודעות: 949
|
|
המ.. השאלה היא כמה הקובץ גדול.
בעקרון גישה לדיסק היא אחת הפעולות היקרות ביותר שיש במחשב: אם גישה לזיכרון לוקחת כ-2 סדרי גודל יותר זמן מפעימת מעבד, אז גישה לדיסק לוקחת כ-6 סדרי גודל יותר (פי מליון). [זמן מעבד נמדד בעשיריות ננו שניות, זמן דיסק במילי שניות]
בעקרון גישות לדיסק מבוצעות ביחידות של דף (page) כאשר ברב המקרים הגודל הזה מוגדר ל-4kb (זה לא גודל אבסולוטי, אבל ברב מערכות המחשב זה הגודל, לא יכול לטעון לגבי חומרה יעודית של שרתים...)
וגישה לקובץ שנכתב באופן רציף על הדיסק מהירה בהרבה מקובץ מקוטע או מידע שמחולק למספר קבצים.
קובץ שמעובד ע"י תוכנה מועלה בד"כ לזיכרון - כולו או חלק ממנו בגודל של מספר דפים - ומעובד משם.
מהבחינה הזו, אם קובץ השפה שלך תופס פחות מ-4kb אין לך בכלל מה לחשוב על זה וכדאי לך לעבוד עם קובץ בודד.
אם הקובץ בן מספר דפים, אז פה יש כבר עניין של האם הקובץ רשום על הדיסק באופן סדרתי או שאולי הוא נקטע למספר בלוקים (בלוק בדיסק הוא בגודל דף, בד"כ). כעקרון קובץ רציף בגודל 8kb יהיה יעיל יותר לקריאה מ-2 קבצים בגודל 4kb או פחות כל אחד.
כעקרון, יש סבירות גבוהה ששבירת הקובץ למספר קבצים, מה שיגדיל את כמות הגישות לדיסק, יפגע לך קשות בביצועים (כאמור, גישה לדיסק היא פעולה מ-א-ד כבדה).
עכשיו, אם הקובץ שלך הוא באמת מאד גדול (מעל ל-100kb למשל) ייתכן שחלוקה טובה שלו למספר קבצים ישפר בצורה ניכרת את הביצועים (בטח אם המערך שלך הוא כ"כ גדול שהבניה שלו בזיכרון היא כבדה בפני עצמה). אם הקובץ שלך הוא בסה"כ כמה קילובייתים, או אפילו כמה עשרות בודדות של קילובייטים, סביר להניח שחלוקה רק תפגע לך בביצועים...
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.
|