מהירות חיפוש שלא היכרתם!

26 views
Skip to first unread message

Moshe Wagner

unread,
Sep 15, 2011, 2:45:32 PM9/15/11
to torat...@googlegroups.com
מסתבר שהחיפוש באורייתא יכול להיות הרבה יותר מהיר משחשבנו, גם בלי שימוש בכל מיני אינדקסים מתוחכמים.

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

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

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

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

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

תפקידכם:

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


תהנו,
משה


avraham

unread,
Sep 15, 2011, 2:50:19 PM9/15/11
to torat...@googlegroups.com
ברוך שובך משה.
מבחינתי אין בעיה בתוספת 200 MB, אבל בכל זאת אני חושב שכדאי לשים בהגדרות אפשרות 'לכבות' את יצירת המאגר.

תודה

2011/9/15 Moshe Wagner <moshe....@gmail.com>

--
You received this message because you are subscribed to the Google Groups "ToratEmetQT" group.
To post to this group, send email to torat...@googlegroups.com.
To unsubscribe from this group, send email to toratemetqt...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/toratemetqt?hl=en.

yoch

unread,
Sep 15, 2011, 3:27:29 PM9/15/11
to ToratEmetQT
שלום משה

השיפור נשמע באמת טוב (יחסית)

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

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

יישר כח

אור שפירא

unread,
Sep 16, 2011, 5:49:42 AM9/16/11
to torat...@googlegroups.com

באיזה שפה כתובה התוכנה?
אם אני יודעת PHP וC# אני יכולה לנסות לסייע?
__
בברכה
אור שפירא
0547432165




2011/9/15 yoch <yoch....@gmail.com>

avraham

unread,
Sep 16, 2011, 6:46:47 AM9/16/11
to torat...@googlegroups.com
c++ בסביבת qt.
את יכולה לראות את הקוד כאן.
אני לא מאמין שמישהו יתנגד אם תנסי לעזור.

2011/9/16 אור שפירא <or.sc...@gmail.com>

avraham

unread,
Sep 16, 2011, 7:50:05 AM9/16/11
to torat...@googlegroups.com
התקנתי את הגירסא החדשה והרצתי את אורייתא. לקח לתוכנה בערך 4 דקות לייצר את המאגר שבמהלכן התוכנה צרכה בין 75%-25% מאחד הcpu (אם כי יש לציין שיש לי הרבה ספרים שנמצאים ב'ספרי המשתמש' ויכול להיות שצלכם זה יקח פחות זמן).
מהירות החיפוש אכן השתפרה פלאים .

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

תודה רבה על ההשקעה ושבת שלום


2011/9/16 avraham <iza...@gmail.com>

אברהם מוניץ

unread,
Sep 17, 2011, 1:54:47 PM9/17/11
to torat...@googlegroups.com
הקטע של המקום (200 מ"ב) נראה לי לא משמעותי, ולא צריך לפצל לשתי גרסאות בגלל זה.

אבל לגבי העומס על המעבד - זה כן ישנה לי, ולאנשים נוספים. עדיין לא נראה לי ששוה לעשות שתי גרסאות בגלל זה - עדיף לעבוד על הלולאה שאברהם ציין ולהשאיר את הגרסא הישנה עד שנפתור אותה.

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

שבוע טוב,

אברהם

בתאריך 16 בספטמבר 2011 14:50, מאת avraham <iza...@gmail.com>:

אבי ואביגיל

unread,
Sep 17, 2011, 4:21:56 PM9/17/11
to torat...@googlegroups.com
+1 למוניץ.
מדוע לא להתקין את הספרים מראש לאחר עיבוד?
מה שצריך זה רק תוכנת עיבוד לספרים שנוספים באופן אישי.

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

שבוע טוב
אבי

בתאריך 17 בספטמבר 2011 20:54, מאת אברהם מוניץ <avra...@gmail.com>:

Moshe Wagner

unread,
Sep 17, 2011, 5:18:18 PM9/17/11
to torat...@googlegroups.com
לא לדאוג, זה הכיוון כרגע. ייתכן שזה ייקח קצת זמן, אבל המאגר יגיע עם הספרים מראש, וככה התוכנה לא תהיה אחראית על הבנייה שלו, אלא רק על שימוש בו.

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

תודה על התגובות!

2011/9/17 אבי ואביגיל <aviav...@gmail.com>

יעקב שלוה

unread,
Sep 18, 2011, 7:39:55 AM9/18/11
to torat...@googlegroups.com
הבעיה שהורדה של 200 MB היא עדיין הורדה שמציקה למי שבחיבור איטי יחסית,
ואני כן חושב שרצוי אם אפשר בצורה פשוטה לאפשר כיבוי של בניית אינדקס למקרה של מחשבים עם שטח אחסון מצומצם.

אגב, בתור משתמש לא אובונטו ולא ווינדוס המקור שלי אמור להיות הSVN? (דביאן במחשב אחד, מנדריבה באחר)

ותודה על התוכנה!

בתאריך 18 בספטמבר 2011 00:18, מאת Moshe Wagner <moshe....@gmail.com>:

avraham

unread,
Sep 18, 2011, 7:54:12 AM9/18/11
to torat...@googlegroups.com
ההורדה עצמה אמורה להיות הרבה יותר קטנה מזה, כי הקבצים דחוסים.
מי שלחוץ מבחינת מקום בדיסק יצטרך להישאר עם הגירסא הישנה.
וכן, המקור שלך יצטרך להיות הsvn ואתה תצטרך לבנות את החבילות לבד. (יש הוראות בוויקי שבאתר).

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

לפיכך:
לעת עתה לא מומלץ להתקין עדכונים חדשים, עד שהבעיות יתוקנו במלואם.


2011/9/18 יעקב שלוה <yac...@gmail.com>

avraham

unread,
Sep 20, 2011, 4:25:01 PM9/20/11
to torat...@googlegroups.com
(כל האמור להלן נוגע אך ורק למשתמשי לינוקס\ אובונטו ולא למשתמשי חלונות או מק).
כפי שאור ציינה, החבילה של הספרים עודכנה אוטומטית, הודות לשינויים האחרונים שנעשו. דא עקא, כדי לגרום למאגר להתעדכן אוטמטית היינו צריכים לשנות את השמות של התיקיות לאנגלית. מי שמתעדכן מהמאגר orayta-daily (זה המאגר לגירסת הבטא שמתעדכן בכל פעם שנעשה שינוי כלשהו בתוכנה) יכול כבר להתקין את גירסא 1.0 של אורייתא שמכילה תיקון לשמות התיקיות וכן גם את החיפוש החדש והמהיר.
מאידך מי שלא מתעדכן מהמאגר היומי אלא מהמאגר הרגיל, לא יקבל את החיפוש החדש וגם לא את התיקון לעברית, ולכן גם מומלץ לו שלא להתקין את העדכון לספרים, אלא להשאר בגירסא 0.05 של הספרים.
(בשל החיפזון להעלות את הגירסא החדשה לפני שמשה היה צריך לחזור לצבא לא הספקנו לסדר את הדברים בצורה טובה יותר).
הוראות מפורטות כיצד להתקין מאגר הdaily או המאגר הרגיל יש בוויקי שלנו - http://code.google.com/p/orayta/wiki/InstallationHebrew. אם מישהו צריך הוראות להסרת אחד המאגרים או שמישהו רוצה להתקין גירסא ישנה יותר, שיפרסם את השאלה כאן.

אני אנסה לסכם בקצרה- יש שתי אפשרויות כרגע:
  1. הגירסא הישנה שכוללת את התוכנה מהמאגר הרגיל שעומדת כרגע על גירסא 0.043 ביחד עם הספרים מאותו מאגר בגירסא 0.05
  2. הגירסא החדשה שכוללת את התוכנה מהמאגר היומי שעומדת על גירסא 1.0 ואת הספרים מהמאגר הרגיל בגירסא 0.10
כל טוב
אברהם י


2011/9/18 avraham <iza...@gmail.com>
Reply all
Reply to author
Forward
0 new messages