169 похожих чатов

Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9

примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависание на чтении отладочной. Проект большой, отладочной много. Ок, начинаю смотреть своим ридером - с ним проблем нет, он читает в районе двух секунд всю отладочную. Вот этим https://github.com/AlexanderBagel/ProcessMemoryMap/blob/master/RawScanner/RawScanner.CoffDwarf.pas

Ок, проверяю а почему у них так? Выясняется, я читаю как, читаю запись, потом сопостовляю её через case по типу с нужным полем. У них же - берется поле - ИЩЕТСЯ!!! где лежит нужная запись причем поиск идет по тупому от нуля до каунта!!! Пииисец. Экспоненциальная зависимость. Странно что не 200 секунд читает

38 ответов

29 просмотров

а я тебе говорил не ходить тудой

Ну...есть мнение, что так сделано потому что отладочная может и отдельно лежать. С другой стороны, может быть прост как осилили

Стикер

Это которые в lnfodwrf.pas ?

Александр В
Ну...есть мнение, что так сделано потому что отлад...

Это пофиг где отладочная сидит - тут сам алгоритм не верный

А я это именно щас и собираюсь делать, тут без вариантов

notme
Это которые в lnfodwrf.pas ?

нет, там ваще тихий ужас, я про "\lazarus\components\fpdebug\fpdbgdwarfdataclasses.pas"

Там вообще много где линейные поиски

Это нормально, я когда прототип клепаю, то не заморачиваюсь преждевременной оптимизацией. Могу и поиск в цикле делать, и копировать значения лишний раз, если это упрощает код. И вроде как на малых данных все быстро и удобно. А потом приходит образец данных на сотню гигов, и там уже нужно хоть немного, но оптимизировать

Sergey Bodrov
Это нормально, я когда прототип клепаю, то не замо...

Тут нужно не оптимизировать - тут нужно всё переписывать

zamtmn
Там вообще много где линейные поиски

Щас только вопрос, как это исправить малой кровью? Моя читалка пока что не заточена на лазарь, хотя самое оптимальное именно её испоьзовать ибо там все весьма оптимизировано

Александр (Rouse_) Багель
Тут нужно не оптимизировать - тут нужно всё перепи...

Да, так тоже бывает. Можно еще попытаться "переходник" сообразить, чтобы в чужой монастырь со своим самоваром не лезть. Но это удручает.

Sergey Bodrov
Да, так тоже бывает. Можно еще попытаться "переход...

Ну щас все обложу профилировщиком и буду искать узкое место, начну хотябы с этого

Alexey Gavrilov
Сначала обложил всякими хловами...

Тем чем я это обложил когда нашел - сюда постить нельзя :)

Александр (Rouse_) Багель
нет, там ваще тихий ужас, я про "\lazarus\componen...

А где там ужас? Выглядит старомодно, классически, но вроде не похоже на говнокод.

Sergey Bodrov
А где там ужас? Выглядит старомодно, классически, ...

ничо что там кэша нет и при чтении дварфа производится миллионы операций чтения с харда по одному два четыре байта? Я уж не говорю что там сам дварф на миниальном уровне ваще читается (это я про lnfodwrf.pp если чо)

Александр (Rouse_) Багель
ничо что там кэша нет и при чтении дварфа производ...

Щас тебе лазаруслфилы напихают про то, что так и должно быть и испокон веков наши деды так делали и если не нравится, напиши как тебе надо

оно и в винде так-же читает :) А тебе задайся вопросом, почему моя это парсит за 2 секунды, а их только на чтение тратит по полминуты? :)

Serjone
Щас тебе лазаруслфилы напихают про то, что так и д...

Чтобы мне что-то напихать нужно обладать как минимум моей квалификацией. Я сам кому хочешь написаю полную кукушку :)))

Александр (Rouse_) Багель
оно и в винде так-же читает :) А тебе задайся вопр...

на всякую мутоту внутри RTL, но не "с харда" я в свое время тупо заменяя "школьный" Read на крупноблочное чтение из TStream и занудный ручной парсинг - тоже поднимал скорость ого-го. Но это чисто RTL, винда с железом делали что могли в обоих случаях

Sergey Bodrov
Это достаточно TDbgFileLoader поправить

там много чего придутся переделывать. Ладно это оффтоп, не отвлекайте - профайлер надо пилить нормальный сначала

Александр (Rouse_) Багель
там много чего придутся переделывать. Ладно это оф...

В TDbgFileLoader.OpenStream заменить TFileStream на TMemoryStream + LodaFromFile займет совсем мало времени =)

Sergey Bodrov
В TDbgFileLoader.OpenStream заменить TFileStream н...

А, ты про fpdebug - ну да, есесно, я думал ты про lnfodwrf

Александр (Rouse_) Багель
А, ты про fpdebug - ну да, есесно, я думал ты про ...

А, это да, говнокод. Но там в TEReader вроде есть буфер. Маленький совсем, но есть.

Хм, странно, у меня 7500 уникальных адресов преобразуются в строку "файл,номер линии, функция" за меньше чем секунду отладочная ~ 300Мб а, не, обманул, дольше - 5,7 сек

notme
Хм, странно, у меня 7500 уникальных адресов преобр...

а у меня все адреса (более миллиона ста тысяч) за 2 секунды :)))

Александр (Rouse_) Багель
ничо что там кэша нет и при чтении дварфа производ...

Одно дело в отладчике читать, другое в вылетевшей программе. В отладчике конечно все надо кэшировать оптимизировать. В программе при развороте стека можно и подождать, но не усугубить поломку дальше

zamtmn
Одно дело в отладчике читать, другое в вылетевшей ...

Разные механизмы используются, у них там ваще толи три толи четыре реализации читалок дварфа

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта