שימוש ב-buffer ב-JS
-
אני מפעיל חיפוש אינטנסיבי על מערך (כלומר, על הזכרון) בן כמה מאות אלפי איברים שמכילים כל אחד מילה באורך שונה.
הבעיה היא שהביצועים ממש לא טובים
לכן חשבתי להכניס את זה ל-buffer שזה מערך אמיתי על הזכרון
אני די חסר ידע והבנה בענין
ככל שאני מבין, כל איבר יכול להכיל ערך בודד, לכן זה בכלל לא רלוונטי.יש למישהו רעיון ו\או פתרון?
תודה רבה לכל מי שמנסה
פורסם במקור בפורום CODE613 ב28/02/2016 07:34 (+02:00)
-
רחמים, איך מצביע (נראה לי שאין בJS) ימהר, איך אגיע מהר יותר למצביע הנכון?
אסביר יותר
יש לי 2 מערכים, קצר וארוך
ואני צריך לחפש בארוך את תוכן המערך הקטן, ברצף.
אז אני מחפש את האיבר הראשון של הקטן בגדול, ומשם ממשיך לבדוק שהם תואמים.עכשיו אני חושב להשאיר את זה כסטרינג, כך אוכל לחפש מיד את הכמה מילים יחד (מס' המילים הרצופות לא ידוע, אבל יש מינימום), וזה יחסוך הרבה בדיקות מיותרות.
פורסם במקור בפורום CODE613 ב28/02/2016 09:03 (+02:00)
-
לכאורה הכי פשוט לעשות על סטרינג חיפוש רג'קס
ככה:var aa = ' aa bb cc dd ff tt dd ee' aa.search(/ dd( ee)?/g)
השאלה, האם במקרה כזה, יש דרך לומר לו שיעדיף את המופע השני של dd כיון שלאחריו יש כן ee?
תודה רבה!!
פורסם במקור בפורום CODE613 ב28/02/2016 09:21 (+02:00)
-
תביא קוד פשוט לדוגמא.
יש דרך למהר את זה?
var arr = [] for( var i =0; i<400000; i++) { arr.push('aa'+i) } for( var i =0; i<400000; i++) { for( var nn =0; nn<100; nn++) if( arr[i] == 'asabb'+i) alert() }
פורסם במקור בפורום CODE613 ב29/02/2016 00:54 (+02:00)
-
@mat
תביא קוד פשוט לדוגמא.יש דרך למהר את זה?
var arr = [] for( var i =0; i<400000; i++) { arr.push('aa'+i) } for( var i =0; i<400000; i++) { for( var nn =0; nn<100; nn++) if( arr[i] == 'asabb'+i) alert() }
לא, זו לא הדוגמא בכלל
אלא
יש לי סטרינג ארוווווך (2-3 מגה)
איך אני ממהר את החיפוש בו
רחמים, כפי אתה רואה, זה בכלל לא המושגים של תוכנת החיפוש שלך, אבל עדיין אני צריך כאן המהרה, כיון שמדובר בהרבה חיפושים (כל חיפוש משוכפל לכמה וירואציות).פורסם במקור בפורום CODE613 ב29/02/2016 04:15 (+02:00)
-
הסטרינג מכיל את כל התנ"ך
נניח שזה הכל
'וְכל שִיחַ הַשָּדֶה טֶרֶם יִהְיֶה בָאָרֶץ וְכָל עֵשֶב הַשָּדֶה טֶרֶם יִצְמָח כִּי לא הִמְטִיר';ויש קטע טקסט מעורבב
'וכל שיח השדה טרם שיהיה בארץ וכל עשב השדה טרם שיצמח כי הוא לא המטיר';ואני רוצה להוציא את כל הרצפים האפשריים שבקטע הטקסט שנמצאים בתנ"ך
מינימום 3 מיליםבדוגמא הזו התוצאה צריכה להיות כך:
- וכל שיח השדה טרם
- שיח השדה טרם
- בארץ וכל עשב השדה טרם
- וכל עשב השדה טרם
- עשב השדה טרם
ממה שבדקתי, אם אני מכניס כל מילה למערך, זמן החיפוש עורך פי 4 זמן.
וככל שהמילה נמצאת עמוק יותר בתנ"ך לוקח יותר זמן להחזיר את התוצאה (נראה שהשפה משתמשת בלולאה רגילה)סכ"ה יוצא דקות לכל קטע לא גדול.
פורסם במקור בפורום CODE613 ב29/02/2016 15:15 (+02:00)
-
ממליץ לך לפתח דטה בייס :lol: :lol: זאת בדיוק המומחיות של SQL ודומיו, זה מה שגוגל מנסה לעשות וכו'. אם זה טקסט קבוע, אין שום סיבה לא להשתמש בכלים קיימים קרי: דטה בייס, עד הרגע אני לא מבין את העקשנות להמציא את הגלגל.
אני בימים אלו מארגן את התנ"ך יש לי טבלה של מילים, כל מילה רשומה, ואני מחפש "פסוקים חברים" כלומר פסוקים שמכילים את הכי הרבה מילים תאומות ביחס לגודל שלהם (למעט מילים כמו "את" וכדומה שהן נפוצות מידי בתנ"ך) אתה מבין לבד שזה אפשרי רק ב SQL וגם הוא צריך לעבוד כמה ימים כדי להגיע לזה.
אגב מאגר איכותי של תנ"ך מאורגן לדטה בייס מעניין אותי מאוד אם יש את נפשך.
תודה.
פורסם במקור בפורום CODE613 ב29/02/2016 16:08 (+02:00)
-
ממליץ לך לפתח דטה בייס :lol: :lol: זאת בדיוק המומחיות של SQL ודומיו, זה מה שגוגל מנסה לעשות וכו'. אם זה טקסט קבוע, אין שום סיבה לא להשתמש בכלים קיימים קרי: דטה בייס, עד הרגע אני לא מבין את העקשנות להמציא את הגלגל.
לשאר הצרכים אני משתמש ב-noSql כי אני לא צריך חיפוש טבלאי, וכך אני מרוויח מהירות (200K מפתחות בקצת יותר משניה).
ובמקרה הספיציפי של התנ"ך מדובר במעט דאטה
ויש סיכוי שניהול שלו על הזכרון יתן מענה טוב ופשוט.אני בימים אלו מארגן את התנ"ך יש לי טבלה של מילים, כל מילה רשומה, ואני מחפש "פסוקים חברים" כלומר פסוקים שמכילים את הכי הרבה מילים תאומות ביחס לגודל שלהם (למעט מילים כמו "את" וכדומה שהן נפוצות מידי בתנ"ך) אתה מבין לבד שזה אפשרי רק ב SQL וגם הוא צריך לעבוד כמה ימים כדי להגיע לזה.
איך אתה מזהה את אותה מילה בוריאציות שונות?
אגב מאגר איכותי של תנ"ך מאורגן לדטה בייס מעניין אותי מאוד אם יש את נפשך.
אני לא מבין למה הכוונה
[/quote]טבלה שתיארת בפיסקה 2 מוכן?פורסם במקור בפורום CODE613 ב29/02/2016 16:28 (+02:00)
-
@דוד ל.ט.
אהרון מה סדר הגודל של הטקסט השני והראשון?
הראשון זה כל התנך והשני זה משפט קצר או באורך דומה?מתוך הטקסט, קטע בן 100 מילים, צריך למצוא צמדים בכל אורך שתואם לתנ"ך.
בסוף עשינו מה שרחמים בעצם כתב, רק לא ידעתי איך לממש א"ז ב-JS
הפעלתי לופ על הסטרינג, וכל מילה נשמרה כתכונה באוביקט ובו כל מיקומי המילה בסטרינג
כך ב2 פעולות (פניה לתכונה, ומשם למקום המדויק בסטרינג) מקבלים את המידע
במקום חיפוש רגיל שמבצע לופ על כל הסטרינג.פורסם במקור בפורום CODE613 ב02/03/2016 14:25 (+02:00)