דילוג לתוכן
  • חוקי הפורום
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
לוגו מותג
  1. דף הבית
  2. קטגוריות בהרצה
  3. תכנות
  4. C++
  5. עזרה הדדית - C++
  6. בקשת מידע | פיתוח הצופן התנכ"י

בקשת מידע | פיתוח הצופן התנכ"י

מתוזמן נעוץ נעול הועבר עזרה הדדית - C++
20 פוסטים 6 כותבים 362 צפיות 7 Watching
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מ משחזר מידע

    @trhtkgsh כתב בבקשת מידע | פיתוח הצופן התנכ"י:

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

    סה"כ "*" ו"&"
    לא מי יודע מה מסובך

    T מנותק
    T מנותק
    trhtkgsh
    כתב נערך לאחרונה על ידי
    #5

    @משחזר-מידע כתב בבקשת מידע | פיתוח הצופן התנכ"י:

    @trhtkgsh כתב בבקשת מידע | פיתוח הצופן התנכ"י:

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

    סה"כ "*" ו"&"
    לא מי יודע מה מסובך

    אז אם זה לא כל כך מסובך בטח לא יהיה לך בעיה לכתוב לי את הקוד

    תגובה 1 תגובה אחרונה
    0
    • T trhtkgsh

      @משחזר-מידע
      1- כידוע בינה מלאכותית עדיין לא מוציאה תוצרים מסובכים יעילים.
      2- אני יודע בוודאות שזה אפשרי כי התוכנות הקודמות של הצופן התנכ"י נכתבו בC++ וחיפוש אצלם מהיר (ברמה של שניה)

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

      צדיק תמיםצ מנותק
      צדיק תמיםצ מנותק
      צדיק תמים
      מדריכים
      כתב נערך לאחרונה על ידי צדיק תמים
      #6

      @trhtkgsh כוונתו שאתה לא צריך "עזרה בכתיבה" כמו שכתבת בפוסט הפותח אלא שפשוט יכתבו את הקוד במקומך

      @trhtkgsh כתב בבקשת מידע | פיתוח הצופן התנכ"י:

      2- אני יודע בוודאות שזה אפשרי כי התוכנות הקודמות של הצופן התנכ"י נכתבו בC++ וחיפוש אצלם מהיר (ברמה של שניה)

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

      רוצה לזכור קריאת שמע בזמן? לחץ כאן! || אתר שכולו מדריכים

      T תגובה 1 תגובה אחרונה
      0
      • Y מנותק
        Y מנותק
        yeo4
        כתב נערך לאחרונה על ידי
        #7

        עניינת. כמה רעיונות שעולים לי לראש:

        1. איך אתה מבצע את החיפוש? בקוד בC#? או בSQL? (דהיינו קורא ממסד נתונים..)
        2. חשבת אולי להפוך לחפש דרך "מנוע חיפוש" קיים שיש? מחיפוש מהיר ראיתי נגיד ספריית לוסין - שיש לה גם קוד של בC#.
        3. עדיף לא להמציא את הגלגל מחדש.

        כל טוב.

        תגובה 1 תגובה אחרונה
        1
        • צדיק תמיםצ צדיק תמים

          @trhtkgsh כוונתו שאתה לא צריך "עזרה בכתיבה" כמו שכתבת בפוסט הפותח אלא שפשוט יכתבו את הקוד במקומך

          @trhtkgsh כתב בבקשת מידע | פיתוח הצופן התנכ"י:

          2- אני יודע בוודאות שזה אפשרי כי התוכנות הקודמות של הצופן התנכ"י נכתבו בC++ וחיפוש אצלם מהיר (ברמה של שניה)

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

          T מנותק
          T מנותק
          trhtkgsh
          כתב נערך לאחרונה על ידי
          #8

          @צדיק-תמים
          חשבתי שהייתי ברור.
          אני צריך מתכנת C++ שיכתוב לי dll עם פונקציה שאפשר לקרוא לה בC#.
          הפונקציה תקבל json של פרטי חיפוש ותחזיר תוצאות חיפוש בjson

          לכתוב קוד שעובד הצלחתי.
          לכתוב קוד שעובד יעיל לא הצלחתי.
          אם רוצים אני יכול לתת את השלד של הקוד (קוד שעובד, אבל לא יעיל ברמה הרצויה)

          sivan22S תגובה 1 תגובה אחרונה
          0
          • T trhtkgsh

            @צדיק-תמים
            חשבתי שהייתי ברור.
            אני צריך מתכנת C++ שיכתוב לי dll עם פונקציה שאפשר לקרוא לה בC#.
            הפונקציה תקבל json של פרטי חיפוש ותחזיר תוצאות חיפוש בjson

            לכתוב קוד שעובד הצלחתי.
            לכתוב קוד שעובד יעיל לא הצלחתי.
            אם רוצים אני יכול לתת את השלד של הקוד (קוד שעובד, אבל לא יעיל ברמה הרצויה)

            sivan22S מנותק
            sivan22S מנותק
            sivan22
            כתב נערך לאחרונה על ידי
            #9

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

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

            ט T 2 תגובות תגובה אחרונה
            2
            • sivan22S sivan22

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

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

              ט מנותק
              ט מנותק
              טופטופיסט
              כתב נערך לאחרונה על ידי
              #10

              @sivan22 כתב בבקשת מידע | פיתוח הצופן התנכ"י:

              הסיכונים הכרוכים בC++

              כמו מה למשל?

              תגובה 1 תגובה אחרונה
              0
              • sivan22S sivan22

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

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

                T מנותק
                T מנותק
                trhtkgsh
                כתב נערך לאחרונה על ידי
                #11

                @sivan22 כתב בבקשת מידע | פיתוח הצופן התנכ"י:

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

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

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

                ניסיתי לכתוב קוד ב-C# והמרתי אותו ל-C++ ורמת הביצועים השתפרה פלאים (במקום 10 לפחות לחיפוש זה ירד לדקה) והלוגיקה הייתה זהה.
                האם לדעתך אפשר לקחת את הקוד הכי יעיל ב-C# ולהמיר אותו בבינה מלאכותית ל-Rust?
                בחרתי ב-C++ כי הוא קרוב ל-C# ואפשר להבין אותו בקלות יחסית.

                תודה, ומה אתה ממליץ?

                יש לי קוד בסיסי שעובד:

                #include "pch.h"
                #include "Codes.h"
                #include "CodeResult.h"
                #include "CodesSearchSettings.h"
                
                #include <future>
                #include <nlohmann/json.hpp>
                #include <Windows.h>
                
                using json = nlohmann::json;
                
                CodeResult* Codes::search(const char* settingsJson, int* resultCount)
                {
                	settings = Codes::initSettings(settingsJson);
                
                	vector<future<vector<CodeResult>>> results;
                
                	for (int i = settings->start; i <= settings->end; i++)
                	{
                		results.emplace_back(async(launch::async, [=]()->vector<CodeResult>
                		{
                			return logic(settings, i);
                		}));
                	}
                
                	vector<CodeResult> finalResults;
                
                	for (auto& task : results)
                	{
                		auto skippingResults = task.get();
                
                		if (!skippingResults.empty())
                			finalResults.insert(finalResults.end(), skippingResults.begin(), skippingResults.end());
                	}
                
                	*resultCount = finalResults.size();
                
                	// Allocate memory using new
                	CodeResult* resultArray = new CodeResult[*resultCount];
                
                	// Copy the results to the allocated array
                	std::copy(finalResults.begin(), finalResults.end(), resultArray);
                
                	return resultArray;
                }
                
                CodesSearchSettings* Codes::initSettings(const char* settingsJson)
                {
                	std::string jsonDataString(settingsJson);
                	json jsonData = json::parse(jsonDataString);
                
                	CodesSearchSettings* newSettings = new CodesSearchSettings();
                
                	newSettings->start = jsonData["Start"];
                	newSettings->end = jsonData["End"];
                	newSettings->lastIndex = jsonData["LastIndex"];
                	newSettings->lettersCount = jsonData["LettersCount"];
                	newSettings->searchTextLength = jsonData["SearchTextLength"];
                
                	newSettings->searchText = new char[newSettings->searchTextLength + 1];
                	strncpy_s(newSettings->searchText, newSettings->searchTextLength + 1, jsonData["SearchText"].get<string>().c_str(), _TRUNCATE);
                
                	newSettings->lettersText = new char[newSettings->lettersCount + 1];
                	strncpy_s(newSettings->lettersText, newSettings->lettersCount + 1, jsonData["LettersText"].get<string>().c_str(), _TRUNCATE);
                
                	return newSettings;
                }
                
                vector<CodeResult> Codes::logic(CodesSearchSettings* settings, int skipping)
                {
                	vector<CodeResult> skippingResults;
                	int totalLenth = settings->searchTextLength * skipping;
                
                	for (int i = 0; i < settings->lastIndex; i++)
                	{
                		int index = 0;
                		int lettersCounter = 0;
                
                		for (int j = 0; j < totalLenth && i + j < settings->lettersCount; j += skipping)
                		{
                			char letterToCheck = settings->lettersText[i + j];
                			char searchTextLetter = settings->searchText[index];
                
                			if (searchTextLetter != letterToCheck)
                				break;
                
                			index++;
                			lettersCounter++;
                		}
                
                		if (lettersCounter == settings->searchTextLength)
                		{
                			CodeResult result = { i, skipping };
                			skippingResults.push_back(result);
                		}
                	}
                
                	return skippingResults;
                }
                
                #define EXPORTED_METHOD extern "C" __declspec(dllexport)
                
                EXPORTED_METHOD CodeResult* searchCodes(const char* settingsJson, int* resultCount)
                {
                	Codes codes;
                	return codes.search(settingsJson, resultCount);
                }
                
                EXPORTED_METHOD void releaseMemory(CodeResult* resultArray) { delete[] resultArray; }
                
                sivan22S מ 2 תגובות תגובה אחרונה
                0
                • T trhtkgsh

                  @sivan22 כתב בבקשת מידע | פיתוח הצופן התנכ"י:

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

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

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

                  ניסיתי לכתוב קוד ב-C# והמרתי אותו ל-C++ ורמת הביצועים השתפרה פלאים (במקום 10 לפחות לחיפוש זה ירד לדקה) והלוגיקה הייתה זהה.
                  האם לדעתך אפשר לקחת את הקוד הכי יעיל ב-C# ולהמיר אותו בבינה מלאכותית ל-Rust?
                  בחרתי ב-C++ כי הוא קרוב ל-C# ואפשר להבין אותו בקלות יחסית.

                  תודה, ומה אתה ממליץ?

                  יש לי קוד בסיסי שעובד:

                  #include "pch.h"
                  #include "Codes.h"
                  #include "CodeResult.h"
                  #include "CodesSearchSettings.h"
                  
                  #include <future>
                  #include <nlohmann/json.hpp>
                  #include <Windows.h>
                  
                  using json = nlohmann::json;
                  
                  CodeResult* Codes::search(const char* settingsJson, int* resultCount)
                  {
                  	settings = Codes::initSettings(settingsJson);
                  
                  	vector<future<vector<CodeResult>>> results;
                  
                  	for (int i = settings->start; i <= settings->end; i++)
                  	{
                  		results.emplace_back(async(launch::async, [=]()->vector<CodeResult>
                  		{
                  			return logic(settings, i);
                  		}));
                  	}
                  
                  	vector<CodeResult> finalResults;
                  
                  	for (auto& task : results)
                  	{
                  		auto skippingResults = task.get();
                  
                  		if (!skippingResults.empty())
                  			finalResults.insert(finalResults.end(), skippingResults.begin(), skippingResults.end());
                  	}
                  
                  	*resultCount = finalResults.size();
                  
                  	// Allocate memory using new
                  	CodeResult* resultArray = new CodeResult[*resultCount];
                  
                  	// Copy the results to the allocated array
                  	std::copy(finalResults.begin(), finalResults.end(), resultArray);
                  
                  	return resultArray;
                  }
                  
                  CodesSearchSettings* Codes::initSettings(const char* settingsJson)
                  {
                  	std::string jsonDataString(settingsJson);
                  	json jsonData = json::parse(jsonDataString);
                  
                  	CodesSearchSettings* newSettings = new CodesSearchSettings();
                  
                  	newSettings->start = jsonData["Start"];
                  	newSettings->end = jsonData["End"];
                  	newSettings->lastIndex = jsonData["LastIndex"];
                  	newSettings->lettersCount = jsonData["LettersCount"];
                  	newSettings->searchTextLength = jsonData["SearchTextLength"];
                  
                  	newSettings->searchText = new char[newSettings->searchTextLength + 1];
                  	strncpy_s(newSettings->searchText, newSettings->searchTextLength + 1, jsonData["SearchText"].get<string>().c_str(), _TRUNCATE);
                  
                  	newSettings->lettersText = new char[newSettings->lettersCount + 1];
                  	strncpy_s(newSettings->lettersText, newSettings->lettersCount + 1, jsonData["LettersText"].get<string>().c_str(), _TRUNCATE);
                  
                  	return newSettings;
                  }
                  
                  vector<CodeResult> Codes::logic(CodesSearchSettings* settings, int skipping)
                  {
                  	vector<CodeResult> skippingResults;
                  	int totalLenth = settings->searchTextLength * skipping;
                  
                  	for (int i = 0; i < settings->lastIndex; i++)
                  	{
                  		int index = 0;
                  		int lettersCounter = 0;
                  
                  		for (int j = 0; j < totalLenth && i + j < settings->lettersCount; j += skipping)
                  		{
                  			char letterToCheck = settings->lettersText[i + j];
                  			char searchTextLetter = settings->searchText[index];
                  
                  			if (searchTextLetter != letterToCheck)
                  				break;
                  
                  			index++;
                  			lettersCounter++;
                  		}
                  
                  		if (lettersCounter == settings->searchTextLength)
                  		{
                  			CodeResult result = { i, skipping };
                  			skippingResults.push_back(result);
                  		}
                  	}
                  
                  	return skippingResults;
                  }
                  
                  #define EXPORTED_METHOD extern "C" __declspec(dllexport)
                  
                  EXPORTED_METHOD CodeResult* searchCodes(const char* settingsJson, int* resultCount)
                  {
                  	Codes codes;
                  	return codes.search(settingsJson, resultCount);
                  }
                  
                  EXPORTED_METHOD void releaseMemory(CodeResult* resultArray) { delete[] resultArray; }
                  
                  sivan22S מנותק
                  sivan22S מנותק
                  sivan22
                  כתב נערך לאחרונה על ידי
                  #12

                  @trhtkgsh לדעתי שווה לנסות להמיר לראסט, זה גם לא נראה קוד ארוך במיוחד. אבל תשתמש רק בקלוד סונט 3.5.

                  T תגובה 1 תגובה אחרונה
                  0
                  • sivan22S sivan22

                    @trhtkgsh לדעתי שווה לנסות להמיר לראסט, זה גם לא נראה קוד ארוך במיוחד. אבל תשתמש רק בקלוד סונט 3.5.

                    T מנותק
                    T מנותק
                    trhtkgsh
                    כתב נערך לאחרונה על ידי
                    #13

                    @sivan22
                    עדיך להשתמש ב- https://cursor.com/ שפונה לקלוד סונט 3.5.
                    תודה רבה, אנסה.
                    בכל מקרה אני מעדיף להשתמש ב-C++ כי יותר קל לתחזק אותו בפרויקט של כל התוכנה.
                    אז אם מישהו רוצה לעזור אשמח

                    תגובה 1 תגובה אחרונה
                    0
                    • T trhtkgsh

                      @sivan22 כתב בבקשת מידע | פיתוח הצופן התנכ"י:

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

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

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

                      ניסיתי לכתוב קוד ב-C# והמרתי אותו ל-C++ ורמת הביצועים השתפרה פלאים (במקום 10 לפחות לחיפוש זה ירד לדקה) והלוגיקה הייתה זהה.
                      האם לדעתך אפשר לקחת את הקוד הכי יעיל ב-C# ולהמיר אותו בבינה מלאכותית ל-Rust?
                      בחרתי ב-C++ כי הוא קרוב ל-C# ואפשר להבין אותו בקלות יחסית.

                      תודה, ומה אתה ממליץ?

                      יש לי קוד בסיסי שעובד:

                      #include "pch.h"
                      #include "Codes.h"
                      #include "CodeResult.h"
                      #include "CodesSearchSettings.h"
                      
                      #include <future>
                      #include <nlohmann/json.hpp>
                      #include <Windows.h>
                      
                      using json = nlohmann::json;
                      
                      CodeResult* Codes::search(const char* settingsJson, int* resultCount)
                      {
                      	settings = Codes::initSettings(settingsJson);
                      
                      	vector<future<vector<CodeResult>>> results;
                      
                      	for (int i = settings->start; i <= settings->end; i++)
                      	{
                      		results.emplace_back(async(launch::async, [=]()->vector<CodeResult>
                      		{
                      			return logic(settings, i);
                      		}));
                      	}
                      
                      	vector<CodeResult> finalResults;
                      
                      	for (auto& task : results)
                      	{
                      		auto skippingResults = task.get();
                      
                      		if (!skippingResults.empty())
                      			finalResults.insert(finalResults.end(), skippingResults.begin(), skippingResults.end());
                      	}
                      
                      	*resultCount = finalResults.size();
                      
                      	// Allocate memory using new
                      	CodeResult* resultArray = new CodeResult[*resultCount];
                      
                      	// Copy the results to the allocated array
                      	std::copy(finalResults.begin(), finalResults.end(), resultArray);
                      
                      	return resultArray;
                      }
                      
                      CodesSearchSettings* Codes::initSettings(const char* settingsJson)
                      {
                      	std::string jsonDataString(settingsJson);
                      	json jsonData = json::parse(jsonDataString);
                      
                      	CodesSearchSettings* newSettings = new CodesSearchSettings();
                      
                      	newSettings->start = jsonData["Start"];
                      	newSettings->end = jsonData["End"];
                      	newSettings->lastIndex = jsonData["LastIndex"];
                      	newSettings->lettersCount = jsonData["LettersCount"];
                      	newSettings->searchTextLength = jsonData["SearchTextLength"];
                      
                      	newSettings->searchText = new char[newSettings->searchTextLength + 1];
                      	strncpy_s(newSettings->searchText, newSettings->searchTextLength + 1, jsonData["SearchText"].get<string>().c_str(), _TRUNCATE);
                      
                      	newSettings->lettersText = new char[newSettings->lettersCount + 1];
                      	strncpy_s(newSettings->lettersText, newSettings->lettersCount + 1, jsonData["LettersText"].get<string>().c_str(), _TRUNCATE);
                      
                      	return newSettings;
                      }
                      
                      vector<CodeResult> Codes::logic(CodesSearchSettings* settings, int skipping)
                      {
                      	vector<CodeResult> skippingResults;
                      	int totalLenth = settings->searchTextLength * skipping;
                      
                      	for (int i = 0; i < settings->lastIndex; i++)
                      	{
                      		int index = 0;
                      		int lettersCounter = 0;
                      
                      		for (int j = 0; j < totalLenth && i + j < settings->lettersCount; j += skipping)
                      		{
                      			char letterToCheck = settings->lettersText[i + j];
                      			char searchTextLetter = settings->searchText[index];
                      
                      			if (searchTextLetter != letterToCheck)
                      				break;
                      
                      			index++;
                      			lettersCounter++;
                      		}
                      
                      		if (lettersCounter == settings->searchTextLength)
                      		{
                      			CodeResult result = { i, skipping };
                      			skippingResults.push_back(result);
                      		}
                      	}
                      
                      	return skippingResults;
                      }
                      
                      #define EXPORTED_METHOD extern "C" __declspec(dllexport)
                      
                      EXPORTED_METHOD CodeResult* searchCodes(const char* settingsJson, int* resultCount)
                      {
                      	Codes codes;
                      	return codes.search(settingsJson, resultCount);
                      }
                      
                      EXPORTED_METHOD void releaseMemory(CodeResult* resultArray) { delete[] resultArray; }
                      
                      מ מנותק
                      מ מנותק
                      משחזר מידע
                      כתב נערך לאחרונה על ידי
                      #14

                      @trhtkgsh כתב בבקשת מידע | פיתוח הצופן התנכ"י:

                      ניסיתי לכתוב קוד ב-C# והמרתי אותו ל-C++

                      המרת לdll?


                      הפעלת ניהול דיסקים דרך הקובץ המצורף

                      Hex editor חינמי

                      T תגובה 1 תגובה אחרונה
                      0
                      • מ משחזר מידע

                        @trhtkgsh כתב בבקשת מידע | פיתוח הצופן התנכ"י:

                        ניסיתי לכתוב קוד ב-C# והמרתי אותו ל-C++

                        המרת לdll?

                        T מנותק
                        T מנותק
                        trhtkgsh
                        כתב נערך לאחרונה על ידי
                        #15

                        @משחזר-מידע
                        כתבתי קוד ב-C#, המרתי אותו ל-C++. בניתי DLL של C++ וקראתי לו ב-C#.
                        רק זה שיפר את הביצועים באופן משמעותי.
                        ע"י AI הבנתי יותר שכדאי לשנות את סוג האובייקטים לשיפור ביצועים.
                        עדיין אין לי משהו טוב שעובד. כל הזמן תקלות שאני לא יודע איך לדבג C++.

                        מ תגובה 1 תגובה אחרונה
                        0
                        • T trhtkgsh

                          @משחזר-מידע
                          כתבתי קוד ב-C#, המרתי אותו ל-C++. בניתי DLL של C++ וקראתי לו ב-C#.
                          רק זה שיפר את הביצועים באופן משמעותי.
                          ע"י AI הבנתי יותר שכדאי לשנות את סוג האובייקטים לשיפור ביצועים.
                          עדיין אין לי משהו טוב שעובד. כל הזמן תקלות שאני לא יודע איך לדבג C++.

                          מ מנותק
                          מ מנותק
                          משחזר מידע
                          כתב נערך לאחרונה על ידי
                          #16

                          @trhtkgsh
                          אתה מעלה כל התנך לזכרון מיד בהרצת התוכנה?
                          או כל חיפוש אתה מעלה מחדש?
                          או לא מעלה בכלל ומחפש בקובץ?


                          הפעלת ניהול דיסקים דרך הקובץ המצורף

                          Hex editor חינמי

                          T תגובה 1 תגובה אחרונה
                          0
                          • מ משחזר מידע

                            @trhtkgsh
                            אתה מעלה כל התנך לזכרון מיד בהרצת התוכנה?
                            או כל חיפוש אתה מעלה מחדש?
                            או לא מעלה בכלל ומחפש בקובץ?

                            T מנותק
                            T מנותק
                            trhtkgsh
                            כתב נערך לאחרונה על ידי
                            #17

                            @משחזר-מידע
                            כל התנ"ך מועלה עם התוכנה וכל פסוק מכיל הרבה מידע עד לרמת האות.
                            וכך כל התנ"ך והמשנה (וכל טקסט אחר שיכניסו לתוכנה)

                            מ תגובה 1 תגובה אחרונה
                            0
                            • T trhtkgsh

                              @משחזר-מידע
                              כל התנ"ך מועלה עם התוכנה וכל פסוק מכיל הרבה מידע עד לרמת האות.
                              וכך כל התנ"ך והמשנה (וכל טקסט אחר שיכניסו לתוכנה)

                              מ מנותק
                              מ מנותק
                              משחזר מידע
                              כתב נערך לאחרונה על ידי משחזר מידע
                              #18

                              @trhtkgsh

                              דבר ראשון הייתי בודק איפה הזמן שלוקח
                              אם זה החיפוש עצמו
                              או אולי עוד לפני שהחיפוש מתחיל אם זה הקוד שלך או זמן הקריאה לdll וכו'


                              הפעלת ניהול דיסקים דרך הקובץ המצורף

                              Hex editor חינמי

                              T תגובה 1 תגובה אחרונה
                              0
                              • מ משחזר מידע

                                @trhtkgsh

                                דבר ראשון הייתי בודק איפה הזמן שלוקח
                                אם זה החיפוש עצמו
                                או אולי עוד לפני שהחיפוש מתחיל אם זה הקוד שלך או זמן הקריאה לdll וכו'

                                T מנותק
                                T מנותק
                                trhtkgsh
                                כתב נערך לאחרונה על ידי
                                #19

                                @משחזר-מידע
                                צוואר הבקבוק נמצא בחיפוש עצמו.
                                ניסיתי להחליף טיפוסים ומצביעים,
                                ניסיתי להריץ את כל החיפושים במקביל (את כל הטווח - 1,2,3,4....)
                                צריך להכיר את השפה ואת האוביקטים היעילים יותר ואת ניהול הזיכרון הטוב יותר כדי לשפר ביצועים.
                                לצערי אני לא מכיר את C++ ברמה הזו

                                מ תגובה 1 תגובה אחרונה
                                0
                                • T trhtkgsh

                                  @משחזר-מידע
                                  צוואר הבקבוק נמצא בחיפוש עצמו.
                                  ניסיתי להחליף טיפוסים ומצביעים,
                                  ניסיתי להריץ את כל החיפושים במקביל (את כל הטווח - 1,2,3,4....)
                                  צריך להכיר את השפה ואת האוביקטים היעילים יותר ואת ניהול הזיכרון הטוב יותר כדי לשפר ביצועים.
                                  לצערי אני לא מכיר את C++ ברמה הזו

                                  מ מנותק
                                  מ מנותק
                                  משחזר מידע
                                  כתב נערך לאחרונה על ידי משחזר מידע
                                  #20

                                  @trhtkgsh
                                  אני חושב בקול (לא ניסיתי)
                                  אולי הבעיה (הזמן שלוקח) הוא בהמרה מאותיות עבריות
                                  אולי חיפוש בhex ואולי אפי Bin (שלא צריך המרה) יהי יותר מהיר


                                  הפעלת ניהול דיסקים דרך הקובץ המצורף

                                  Hex editor חינמי

                                  תגובה 1 תגובה אחרונה
                                  0

                                  • התחברות

                                  • אין לך חשבון עדיין? הרשמה

                                  • התחברו או הירשמו כדי לחפש.
                                  • פוסט ראשון
                                    פוסט אחרון
                                  0
                                  • חוקי הפורום
                                  • לא נפתר
                                  • משתמשים
                                  • חיפוש גוגל בפורום
                                  • צור קשר