27-10-2005, 17:29
|
|
|
חבר מתאריך: 20.02.03
הודעות: 2,396
|
|
אשמח לדוגמא של מה שביצעת ב ASP, כיוון שאולי אני עדיין לא יורד לסוף דעתך.
כשאתה מדבר על "המון חישובים לכל פריט"... אפשר סדר גודל של כמות החישובים המדוברת?
האם מדובר בסדר גודל של מספר המכיל ספרה אחת? או עשר ספרות? או שאולי מדובר ב-100?
כשאתה מריץ קוד כלשהו ב PHP הוא נטען לזיכרון ורץ שם, ולכן כמות הפעולות החישוביות זה דבר זניח שאנחנו נוטים להתעלם ממנו (אלא אם מדובר בהמון פעולות בזבזניות כמובן).
בכל אופן, אתה מוזמן לבנות את הקוד שלך ולהוסיף את החלק הבא על מנת לחשב את זמן הריצה של הקוד:
קוד PHP:
function float_mt() { $t = explode(" ", microtime()); return bcadd($t[0], $t[1], 4); }
$start = float_mt(); // rest of code here $end = float_mt();
$total = $end - $start; echo "Page generated in $total seconds.\n";
כמובן שכל הקוד שלך צריך להיכנס איפה שכרגע מופיעה ההערה
תריץ את הסקריפט הנוכחי שלך ותבדוק תוך כמה זמן הוא מסיים לרוץ...
שים לב שאני מדבר על חישוב ספציפי לפריט אחד... במידה ויש לך המון שאילתות בדף המדובר, או שאילתות שמוציאות לך יותר אינפורמציה ממה שאתה צריך, הן יכולות להיות גורם מכריע במהירות יצירת הדף.
בלי קשר, שוב אני מבקש לדעת באיזה אובייקט ב ASP מדובר, כיוון שלא שמעתי על אובייקט כזה (למעט application, שאגב מאותחל בכל איתחול של השרת... דבר שלפעמים קורה פעם בשבוע ואף פחות בשרתי windows) שלאחר האיתחול שלו נותן גישה אליו לכל המשתמשים ומכיל כמות גדולה של אינפורמציה שעברה המון חישובים....
משתנה הוא בסה"כ מקום בזיכרון המכיל מידע, על פי המידע שאתה מכניס לו. המשתנה יכול כמובן להשתנות במהלך הריצה של הקוד. לא מבין את מה שכתבת בנוגע לזה ש shm לא עוזר לך פה... זה בדיוק מה שאתה צריך. במקום לשמור את המידע שעבר חישובים באיזה "משתנה" כלשהו, אתה שומר אותו בזיכרון, רק שהפעם יש לך גישה אליו מכל מקום ומכל דף שרץ... (שזה בעצם מה שאתה רוצה, לא?)
שוב אני אומר, חסרים לנו עוד פרטים על מנת שנוכל לעזור לך... תנסה אולי להסביר את פשר הסיבה שבשלה אתה צריך שהאובייקט המדובר יהיה משותף לכולם...
שים לב שבמערכת בה אתה גולש כרגע יש דטאבייס (אם אני לא טועה מדובר ב mysql) שמכיל את הטבלאות, ובכל פעם שגולש ניגש לפורום/אשכול וכו' הטבלאות המתאימות נקראות בהתאם.
כמובן ש mysql בתור דטאבייס מתקדם מכיל מערכת caching המיועדת לגישה מהירה לנתונים, וחיסכון בזמן בקריאה חוזרת של טבלאות, ובנוסף ניתן להריץ מערכות caching נוספות אשר מייעלות את מהירות הגישה לנתונים... אבל אלו כבר דברים שלא תמיד תלויים בך בתור מתכנת
בברכה, דקל
|