Форум: "Прочее";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
ВнизДелфи продолжает глючить. Найти похожие ветки
← →
Vovan#2 (2006-12-09 20:12) [0]Как обычно каждый месяц натыкаюсь на глюки Delphi. Ну вот сейчас, например, заметил, что резко упала скорость обработки данных. А вроде ведь ничего замедляющего не делал. Стал изучать. Выяснилось, что если закомментировать один кусок кода, который не выполняется, то программа замедляется. Если комментарий убрать (но кусок то всё-равно не выполняется), то скорость увеличивается. В общем, невозможное становится возможным. Наоптимизировался Борланд.
← →
Vovan#2 (2006-12-09 20:20) [1]Ха-ха, выяснилось, что если закомментировать другой кусок кода, который не выполняется, программа вновь пашет быстро.
← →
Kolan © (2006-12-09 20:22) [2]> Vovan#2
Можешь обижаться, но тут решение одно - нюхать руки(зачем объяснять?) и делать выводы.
ЗЫ
Если не согласен - кусок кода в студию...
← →
Vovan#2 (2006-12-09 20:49) [3]> Если не согласен - кусок кода в студию...
Да, так я и выдал вам свои секретные разработки.
Да, и я обиделся, это справедливо замечено.
← →
ProgRAMmer Dimonych © (2006-12-09 21:11) [4]А у меня вот после того, как переключаюсь на другое приложение и снова возвращаюсь к Delphi - она на некоторое время переходит в состояние телеграфного столба, т.е. молчит и о чём-то философском думает :(
← →
oxffff © (2006-12-09 21:31) [5]
> ProgRAMmer Dimonych © (09.12.06 21:11) [4]
> А у меня вот после того, как переключаюсь на другое приложение
> и снова возвращаюсь к Delphi - она на некоторое время переходит
> в состояние телеграфного столба, т.е. молчит и о чём-то
> философском думает :(
А у вас копия лицинзионная? :)
← →
Anatoly Podgoretsky © (2006-12-09 21:33) [6]> oxffff (09.12.2006 21:31:05) [5]
Думаешь, что все это время она докладывает Борланду?
← →
Kolan © (2006-12-09 21:33) [7]> Да, так я и выдал вам свои секретные разработки.
Вот черт опять не получилось выманить секрет.... :)
← →
oxffff © (2006-12-09 21:36) [8]
> Anatoly Podgoretsky © (09.12.06 21:33) [6]
> > oxffff (09.12.2006 21:31:05) [5]
>
> Думаешь, что все это время она докладывает Борланду?
Именно так, я постоянно вижу свои разработки то здесь, то там.
:)
← →
Vovan#2 (2006-12-09 21:54) [9]Не, давайте так. Я даю кому-нибудь одному исходники на правах неразглашения, тот смотрит это дело и говорит, у кого глюк.
← →
Anatoly Podgoretsky © (2006-12-09 22:02) [10]> Vovan#2 (09.12.2006 21:54:09) [9]
В одном экземпляре, тогда зачем думать?
← →
$Pl@Sh © (2006-12-09 23:00) [11]
> oxffff © (09.12.06 21:36) [8]
Windows тоже твоя разработка? :-)
← →
sniknik © (2006-12-09 23:11) [12]Vovan#2 (09.12.06 21:54) [9]
было бы разумнее выделить часть с глюком, убрав секретное и выложить на всеобщее обозрение.
хотя, можно и так посмотреть, шли. на слово тогда поверишь? раз уж даже в качестве доказательств нельзя будет куски кода приводить?
только у меня тоже условие, у меня нет, и не будет никаких нестандартных компонент, если для проверки нужно чтото устанавливать... проехали, можно даже не начинать. потом, дельфи у меня 7-я лицензионная, если нужна переустановка/другая версия тоже проехали. если чегонибудь не так (+ к упомянутому например вместо исходников какогото модуля dcu), прога сразу пойдет в корзину без всякого разбора кода. туда же она отправится если не будет описания действий - сделаешь так .... (модуль, строки) тормозит, ... а так нет.
← →
Anatoly Podgoretsky © (2006-12-09 23:18) [13]> sniknik (09.12.2006 23:11:12) [12]
И соответсвенно диагноз в этих случаях - нечего бочку катить.
← →
oxffff © (2006-12-09 23:59) [14]
> Vovan#2 (09.12.06 20:12)
> Как обычно каждый месяц натыкаюсь на глюки Delphi. Ну вот
> сейчас, например, заметил, что резко упала скорость обработки
> данных. А вроде ведь ничего замедляющего не делал. Стал
> изучать. Выяснилось, что если закомментировать один кусок
> кода, который не выполняется, то программа замедляется.
> Если комментарий убрать (но кусок то всё-равно не выполняется),
> то скорость увеличивается. В общем, невозможное становится
> возможным. Наоптимизировался Борланд.
Думай и читай книги.
← →
Vovan#2 (2006-12-10 00:14) [15]>sniknik © (09.12.06 23:11) [12]
По поводу выделения части кода. Однажды (и я тут уже писал про это) у меня возник глюк с ложным warning, который исчезал при удалении частей кода, которые никак к этому варнингу не относились (или даже не при удалении, а просто при сокращении выражения). Глюк зависел от количества строк, причём строки могли быть любыми. Теперь я не доверяю этому способу.
Код вышлю. На слово верю. Куски приводить можно, но разумного размера. Прошу не рассказывать о назначении программы. Проект писался в Turbo Delphi, я его сейчас откомпилировал и настроил в D7 - и баг этот есть. Компонентов сторонних не использует, могут быть рудименты от Турбы - их в ignore. Инструкции в письме, письмо скоро будет.
← →
isasa © (2006-12-10 00:17) [16]Vovan#2 (09.12.06 20:12)
Я тут подумал. А если закоментировать весь код?
← →
Vovan#2 (2006-12-10 00:30) [17]>Я тут подумал. А если закоментировать весь код?
Да, именно подумал, как бы половчее пошутить. А может быть не думал - сразу пришло в голову. Гении - они такие, кто ж их знает.
← →
ProgRAMmer Dimonych © (2006-12-10 00:38) [18]> oxffff © (09.12.06 21:31) [5]
>
> > ProgRAMmer Dimonych © (09.12.06 21:11) [4]
> > А у меня вот после того, как переключаюсь на другое приложение
> > и снова возвращаюсь к Delphi - она на некоторое время переходит
> > в состояние телеграфного столба, т.е. молчит и о чём-то
> > философском думает :(
>
> А у вас копия лицинзионная? :)
А у Вас? Сомневаюсь, что услышу нечто неожиданное :)
← →
isasa © (2006-12-10 01:12) [19]Vovan#2 (10.12.06 00:30) [17]
Ну тогда поздравляю. Программа с непрогнозируемым поведением еще шаг к ИИ.
← →
sniknik © (2006-12-10 01:33) [20]Vovan#2 (10.12.06 00:14) [15]
если действовать строго по письму, нажать одну кнопку после другую, то AV на строке
HighCenters := High(S.LetterLib.Letters[k].Centers);
в модуле DecIfolderru.
если сначала нажать "Extract" (после первой кнопки. загрузки), то AV нет, а время и с раскоментаренной строкой и as is, в обоих случаях, показывает 0.
← →
Real © (2006-12-10 02:54) [21]
> Ну тогда поздравляю. Программа с непрогнозируемым поведением
> еще шаг к ИИ.
До сих пор программы с непргнозируемым поведением считались просто глючными :)
← →
SergP © (2006-12-10 10:51) [22]> А у вас копия лицинзионная? :)
А чем отличается лицензионная копия от нелицензионной?
← →
ors_archangel © (2006-12-10 11:48) [23]
> SergP © (10.12.06 10:51) [22]
> А чем отличается лицензионная копия от нелицензионной?
Лицензионные баги дороже :)
> Vovan#2 (09.12.06 20:12)
> Наоптимизировался Борланд.
Не стал бы так говорить о IDE, в котором компилятор не может построить B-дерево для оператора выбора по константам :(
← →
Vovan#2 (2006-12-10 12:37) [24]>sniknik © (10.12.06 01:33) [20]
Можно записать ещё один глюк в пользу Делфи.
← →
DrPass © (2006-12-10 13:49) [25]
> Можно записать ещё один глюк в пользу Делфи
Думаешь? ИМХО, это глюк в пользу программы
← →
oxffff © (2006-12-10 13:54) [26]
> SergP © (10.12.06 10:51) [22]
> > А у вас копия лицинзионная? :)
>
>
> А чем отличается лицензионная копия от нелицензионной?
Остутствием срока УК РФ.
← →
Vovan#2 (2006-12-10 14:40) [27]>Думаешь? ИМХО, это глюк в пользу программы
программы delphi32.exe
← →
oxffff © (2006-12-10 14:45) [28]
> Vovan#2 (10.12.06 14:40) [27]
> >Думаешь? ИМХО, это глюк в пользу программы
>
> программы delphi32.exe
Так вы сравните код на ассемблере, и код в студию или на QC.
Привидите пример когда компилятор генерирует неоптимальный код.
Мы его разберем.
← →
sniknik © (2006-12-10 14:54) [29]Vovan#2 (10.12.06 12:37) [24]
> Можно записать ещё один глюк в пользу Делфи.
записывай куда хочеш. а от чего глюк я счас скажу.
в начале на создании формы есть загрузка файла, она идет от относительного пути, так вот если путь не текущий (а именно это у меня и получилось) то файл не загружается, + не инициализируется какаято там структура, к которой после идет обращение. вот и AV. загрузка же файла никаких ошибок не дает, это важное для программы действие эту ошибку попросту игнорирует.
вот.
почему нет глюка при нажатии Extract? потому что там у тебя чтото расчитывается от рисунка на форме, результатом идет индекс (LettNo в обработчике кнопки) в структуре (которая пустая изза незагрузки файла), а после сбрасывается (рисунок чистится) по чистому, второй вызов дает индекс 0 который есть в структуре по умолчанию (нет AV).
ну а так в итоговой, кнопке есть вызовы первых двух, то при предварительном нажатии Extract там будет повторный вызов (индекс 0, если не забыл) вот глюка и нет... но и вычислений нет, время тоже 0.
не знаю понятно обьяснил, или нет, просто переименуй загружаемый файл/директорию чтобы воссоздать глюк.
в общем при переделке пути на абсолютный (расчет от имени екзешника) все стало работать (в принципе оно и при втором запуске работало т.к. путь совпал. но так надежнее), но вот "эффекта" все одно нет и с закоментареной и с раскоментареной указанной строкой время выполнения равно 172.
ну а раз оно одинаково, то посмотреть разницу я не смогу... (хотел получаемый asm код по CPU сравнить)
← →
Плохиш © (2006-12-10 19:20) [30]
> Vovan#2 (09.12.06 21:54) [9]
> Не, давайте так. Я даю кому-нибудь одному исходники на правах
> неразглашения, тот смотрит это дело и говорит, у кого глюк.
Мы и без твоих "исходников" знаем у кого глюк и кто занимается не своим делом...
← →
oxffff © (2006-12-11 00:01) [31]Я здесь.
Где ASM код?
Ждемc
← →
Джо © (2006-12-11 00:30) [32]> [31] oxffff © (11.12.06 00:01)
> Я здесь.
> Где ASM код?
> Ждемc
После [29] sniknik © он уже, кажется, и не требуется :)
← →
oxffff © (2006-12-11 00:38) [33]
> Джо © (11.12.06 00:30) [32]
> > [31] oxffff © (11.12.06 00:01)
> > Я здесь.
> > Где ASM код?
> > Ждемc
>
> После [29] sniknik © он уже, кажется, и не требуется :)
Я тоже думаю, что дело здесь не в компиляторе,
хотя я видел примеры генерации неоптимального кода.
Но могу сказать, что на глаз было не определить.
Поэтому причину нужно искать не в Delphi, а в реализации.
← →
Vovan#2 (2006-12-11 00:39) [34]>После [29] sniknik © он уже, кажется, и не требуется :)
Почему? Вы думаете, я врал?
Есть мнение, что дело в fastmem и как там его. Он у меня заменяет стандартный. Я бы повторил эксперимент ещё с кем-нибудь, но на турбочке. Есть желающие?
← →
oxffff © (2006-12-11 00:46) [35]Думаю желающих уже нет.
Вы всех распугали своей секретностью.
← →
DrPass © (2006-12-11 00:49) [36]
> Vovan#2 (11.12.06 00:39) [34]
>
> Почему? Вы думаете, я врал?
Ну почему сразу врал? Просто, как это уже было в 100% подобных случаев, сам сделал ошибку, не смог ее найти и свалил вину на Delphi.
Поверь, во всех аналогичных ситуациях виноват был программист, а не Delphi. И нет ни единого основания считать, что твой случай чем-то отличается. Тем более, что в [29] тебе уже все разжевали. Этого мало? Или еще Fastmem хочешь протестить (open source, который много лет нормально юзают десятки тысяч программистов, и который у тебя одного вдруг оказался с багом)?
← →
ors_archangel © (2006-12-11 01:00) [37]
> oxffff © (10.12.06 14:45) [28]
> Привидите пример когда компилятор генерирует неоптимальный
> код.
> Мы его разберем.
Открой любой проект, f4 куда-нить, затем Ctrl+Alt+C, пожалуйста - неоптимальный код.
Напрмер, есть код:
function calc_z: single;
var
i: integer;
begin
result := 0;
for i := 0 to n-1 do result := result + k[i]*x[i];
end;
где k: array of single, k: array of integer, disasm:
push ebp
mov ebp,esp
push ecx
// result = 0
xor eax,eax
mov [ebp-4],eax
// for i = 1 to n-1 do result += k[i]*x[i]
mov eax,[ebp+8]
mov edx,[eax-4]
dec edx
test edx,edx
jl +$20
inc edx
xor eax,eax
mov ecx,[x]
fild dword ptr [ecx+eax*4]
mov ecx,[k]
fmul dword ptr [ecx+eax*4]
fadd dword ptr [ebp-4]
fstp dword ptr [ebp-4]
wait
inc eax
dec edx
jnz -$1d
fld dword ptr [ebp-4]
// end
pop ecx
pop ebx
ret
// Не бойтесь совершенства, вам его не достичь
← →
Vovan#2 (2006-12-11 01:18) [38]>Ну почему сразу врал? Просто, как это уже было в 100% подобных случаев, сам сделал ошибку, не смог ее найти и свалил вину на Delphi.
Поверь, во всех аналогичных ситуациях виноват был программист, а не Delphi. И нет ни единого основания считать, что твой случай чем-то отличается. Тем более, что в [29] тебе уже все разжевали. Этого мало? Или еще Fastmem хочешь протестить (open source, который много лет нормально юзают десятки тысяч программистов, и который у тебя одного вдруг оказался с багом)?
Что разжевали то? Там смысловое - только "но вот "эффекта" все одно нет". Остальное - некто не умеет открывать проекты Дельфи, но умеет писать баллады мне, автору проекта, как надо было открывать.
Fastmem хорош, да только когда его установили борландовцы...
Вот у тебя Делфи какая?
← →
sniknik © (2006-12-11 01:48) [39]> Есть мнение, что дело в fastmem и как там его. Он у меня заменяет стандартный.
врядли, после [34] проверил, подключил к твоей проге FastMM3, разницы нет, и кстати быстрее не стало (и чего это он Fast? ;о)), зато заметил, что время "плавает" (независимо от того закоментарена указанная строка или нет) от 171 до 188 (почти те 20 заявленных млс.), что тоже объяснимо, т.к. у тебя в расчетах задействованы визуальные контролы, у которых в свою очередь обработчики, перерисовки... для визуальных это вполне укладывается в погрешность. (они заняты не только твоим, они еще на всякие события независимо от тебя реагируют)
простой пример, на пустую форму положи имедж, сделай ему достаточно большой размер (скажем 500/500), и кнопку с простым кодомprocedure TForm1.Button1Click(Sender: TObject);
var
Time: Cardinal;
x, y, i: integer;
begin
Time := GetTickCount;
for x:= 0 to Image1.Width-1 do
for y:= 0 to Image1.Height-1 do
Image1.Canvas.Pixels[x, y]:= Random(32767);
Label1.Caption := IntToStr(GetTickCount - Time);
end;
понажимай на нее, раз 10 к примеру, ну как, время одно и тоже? а это простейшая модель твоих действий.
и никакие комментарии не участвуют.
← →
sniknik © (2006-12-11 01:51) [40]> но умеет писать баллады мне, автору проекта, как надо было открывать.
ты бы лучше туда ексепт вставил, раз после этого проге работать ну никак нельзя.
автор проекта... ;), неправильно ты все понимаешь.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.055 c