Автор |
Сообщение |
|
|
Заголовок сообщения: |
|
|
|
вопрос писал(а): ассемблерный вариант тоже не очень хорошая идея.
А что делать-то, в ANSI такого понятия как время выполнения кода просто нет.
В единицах эквивалентных dup-drop это время измерять что-ли.
Насчет доработки SEE - это просто минимальная добавка текста к уже существующему исходнику.
Вывод же самого текста кода можно подавить.
[quote="вопрос"]ассемблерный вариант тоже не очень хорошая идея. [/quote]
А что делать-то, в ANSI такого понятия как время выполнения кода просто нет. :(
В единицах эквивалентных dup-drop это время измерять что-ли. :)
Насчет доработки SEE - это просто минимальная добавка текста к уже существующему исходнику.
Вывод же самого текста кода можно подавить.
|
|
|
|
Добавлено: Пн май 12, 2008 07:59 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Цитата: необходим набор методик, позволяющих замерять автоматически:
скорость отдельных кусков кода,
длительность работы изучаемого алгоритма,
размер кода
проверять баланс стека
??? другие возможные параметры
Кажеться, только один вариант - моделировать форт-машину
[quote]необходим набор методик, позволяющих замерять автоматически:
скорость отдельных кусков кода,
длительность работы изучаемого алгоритма,
размер кода
проверять баланс стека
??? другие возможные параметры [/quote]
Кажеться, только один вариант - моделировать форт-машину
|
|
|
|
Добавлено: Сб май 10, 2008 21:21 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
chess писал(а): для измерения времени кода chess писал(а): WordByAddr это для СПФ подходит. Тут АНС-овости нет. chess писал(а): нужна длина кода - дорабатываем SEE
SEE тоже не во всех фортах есть, да и это как бы "из пушек по воробьям" вроде.
ассемблерный вариант тоже не очень хорошая идея.
А вообще, для начала не плохо бы подумать, как оформлять тестируемый код...
какие критерии для тестирования выбрать?
какие более важные, а какие менее?
как можно автоматизировать тестирование результата?
[quote="chess"]для измерения времени кода[/quote] [quote="chess"] WordByAddr[/quote] это для СПФ подходит. Тут АНС-овости нет.
[quote="chess"]нужна длина кода - дорабатываем SEE[/quote]
SEE тоже не во всех фортах есть, да и это как бы "из пушек по воробьям" вроде.
ассемблерный вариант тоже не очень хорошая идея.
А вообще, для начала не плохо бы подумать, как оформлять тестируемый код...
какие критерии для тестирования выбрать?
какие более важные, а какие менее?
как можно автоматизировать тестирование результата?
|
|
|
|
Добавлено: Сб май 10, 2008 18:29 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Ассемблерный вариант измерителя времени кода.
Код: REQUIRE IDN ~chess\assm\sp-assm.f
\ макросы \ время измеряемого кода и кода его измерителя MI" dt1 A^A CPUID DA=TSC M1=A B=M0 :B A^A CPUID DA=TSC "MI \ время кода измерителя MI" dt2 A^A CPUID DA=TSC M1=A B=M0 A^A CPUID DA=TSC "MI
: METER \ "name" -- ' M0=A dt1 C=M1 A-C M2=A dt2 C=M1 A-C B=A A=M2 A-B CR . \ вывод латентности(актуально для разового исполнения) dt1 dt1 C=M1 A-C M2=A dt2 dt2 C=M1 A-C B=A A=M2 A-B . \ вывод времени кода в кэше(актуально для исполнения в цикле) S0 @ SP! ;
\ EOF
: TEST S" 0123456789" 2DUP ;
STARTLOG
METER TEST
SEE METER лог Код: 1110 33
CODE METER 5A552B E8081FFCFF CALL 567438 ( ' ) 5A5530 0F6EC0 MOVD MM0 , EAX 5A5533 33C0 XOR EAX , EAX 5A5535 0FA2 CPUID 5A5537 0F31 RDTSC 5A5539 0F6EC8 MOVD MM1 , EAX 5A553C 0F7EC3 MOVD EBX , MM0 5A553F FFD3 CALL EBX \ вызов измеряемого кода 5A5541 33C0 XOR EAX , EAX 5A5543 0FA2 CPUID 5A5545 0F31 RDTSC 5A5547 0F7EC9 MOVD ECX , MM1 5A554A 2BC1 SUB EAX , ECX 5A554C 0F6ED0 MOVD MM2 , EAX 5A554F 33C0 XOR EAX , EAX 5A5551 0FA2 CPUID 5A5553 0F31 RDTSC 5A5555 0F6EC8 MOVD MM1 , EAX 5A5558 0F7EC3 MOVD EBX , MM0 5A555B 33C0 XOR EAX , EAX 5A555D 0FA2 CPUID 5A555F 0F31 RDTSC 5A5561 0F7EC9 MOVD ECX , MM1 5A5564 2BC1 SUB EAX , ECX 5A5566 8BD8 MOV EBX , EAX 5A5568 0F7ED0 MOVD EAX , MM2 5A556B 2BC3 SUB EAX , EBX 5A556D E83E07FBFF CALL 555CB0 ( CR ) 5A5572 E8810DFBFF CALL 5562F8 ( . ) 5A5577 33C0 XOR EAX , EAX 5A5579 0FA2 CPUID 5A557B 0F31 RDTSC 5A557D 0F6EC8 MOVD MM1 , EAX 5A5580 0F7EC3 MOVD EBX , MM0 5A5583 FFD3 CALL EBX 5A5585 33C0 XOR EAX , EAX 5A5587 0FA2 CPUID 5A5589 0F31 RDTSC 5A558B 33C0 XOR EAX , EAX 5A558D 0FA2 CPUID 5A558F 0F31 RDTSC 5A5591 0F6EC8 MOVD MM1 , EAX 5A5594 0F7EC3 MOVD EBX , MM0 5A5597 FFD3 CALL EBX 5A5599 33C0 XOR EAX , EAX 5A559B 0FA2 CPUID 5A559D 0F31 RDTSC 5A559F 0F7EC9 MOVD ECX , MM1 5A55A2 2BC1 SUB EAX , ECX 5A55A4 0F6ED0 MOVD MM2 , EAX 5A55A7 33C0 XOR EAX , EAX 5A55A9 0FA2 CPUID 5A55AB 0F31 RDTSC 5A55AD 0F6EC8 MOVD MM1 , EAX 5A55B0 0F7EC3 MOVD EBX , MM0 5A55B3 33C0 XOR EAX , EAX 5A55B5 0FA2 CPUID 5A55B7 0F31 RDTSC 5A55B9 33C0 XOR EAX , EAX 5A55BB 0FA2 CPUID 5A55BD 0F31 RDTSC 5A55BF 0F6EC8 MOVD MM1 , EAX 5A55C2 0F7EC3 MOVD EBX , MM0 5A55C5 33C0 XOR EAX , EAX 5A55C7 0FA2 CPUID 5A55C9 0F31 RDTSC 5A55CB 0F7EC9 MOVD ECX , MM1 5A55CE 2BC1 SUB EAX , ECX 5A55D0 8BD8 MOV EBX , EAX 5A55D2 0F7ED0 MOVD EAX , MM2 5A55D5 2BC3 SUB EAX , EBX 5A55D7 E81C0DFBFF CALL 5562F8 ( . ) 5A55DC 8945FC MOV FC [EBP] , EAX 5A55DF 8B87581F0000 MOV EAX , 1F58 [EDI] 5A55E5 8D6DFC LEA EBP , FC [EBP] 5A55E8 E8CBD8FAFF CALL 552EB8 ( SP! ) 5A55ED C3 RET NEAR END-CODE ( 195 Bytes ) Реальное время исполнения кода находится между значением его латентности и
временем исполнения кода, когда он полностью находится в кэше процессора.
У кода, который представляет собой цикл, латентность приближается к времени исполнения его из кэша.
Ассемблерный вариант измерителя времени кода.
[code] REQUIRE IDN ~chess\assm\sp-assm.f
\ макросы \ время измеряемого кода и кода его измерителя MI" dt1 A^A CPUID DA=TSC M1=A B=M0 :B A^A CPUID DA=TSC "MI \ время кода измерителя MI" dt2 A^A CPUID DA=TSC M1=A B=M0 A^A CPUID DA=TSC "MI
: METER \ "name" -- ' M0=A dt1 C=M1 A-C M2=A dt2 C=M1 A-C B=A A=M2 A-B CR . \ вывод латентности(актуально для разового исполнения) dt1 dt1 C=M1 A-C M2=A dt2 dt2 C=M1 A-C B=A A=M2 A-B . \ вывод времени кода в кэше(актуально для исполнения в цикле) S0 @ SP! ;
\ EOF
: TEST S" 0123456789" 2DUP ;
STARTLOG
METER TEST
SEE METER[/code] лог [code]1110 33
CODE METER 5A552B E8081FFCFF CALL 567438 ( ' ) 5A5530 0F6EC0 MOVD MM0 , EAX 5A5533 33C0 XOR EAX , EAX 5A5535 0FA2 CPUID 5A5537 0F31 RDTSC 5A5539 0F6EC8 MOVD MM1 , EAX 5A553C 0F7EC3 MOVD EBX , MM0 5A553F FFD3 CALL EBX \ вызов измеряемого кода 5A5541 33C0 XOR EAX , EAX 5A5543 0FA2 CPUID 5A5545 0F31 RDTSC 5A5547 0F7EC9 MOVD ECX , MM1 5A554A 2BC1 SUB EAX , ECX 5A554C 0F6ED0 MOVD MM2 , EAX 5A554F 33C0 XOR EAX , EAX 5A5551 0FA2 CPUID 5A5553 0F31 RDTSC 5A5555 0F6EC8 MOVD MM1 , EAX 5A5558 0F7EC3 MOVD EBX , MM0 5A555B 33C0 XOR EAX , EAX 5A555D 0FA2 CPUID 5A555F 0F31 RDTSC 5A5561 0F7EC9 MOVD ECX , MM1 5A5564 2BC1 SUB EAX , ECX 5A5566 8BD8 MOV EBX , EAX 5A5568 0F7ED0 MOVD EAX , MM2 5A556B 2BC3 SUB EAX , EBX 5A556D E83E07FBFF CALL 555CB0 ( CR ) 5A5572 E8810DFBFF CALL 5562F8 ( . ) 5A5577 33C0 XOR EAX , EAX 5A5579 0FA2 CPUID 5A557B 0F31 RDTSC 5A557D 0F6EC8 MOVD MM1 , EAX 5A5580 0F7EC3 MOVD EBX , MM0 5A5583 FFD3 CALL EBX 5A5585 33C0 XOR EAX , EAX 5A5587 0FA2 CPUID 5A5589 0F31 RDTSC 5A558B 33C0 XOR EAX , EAX 5A558D 0FA2 CPUID 5A558F 0F31 RDTSC 5A5591 0F6EC8 MOVD MM1 , EAX 5A5594 0F7EC3 MOVD EBX , MM0 5A5597 FFD3 CALL EBX 5A5599 33C0 XOR EAX , EAX 5A559B 0FA2 CPUID 5A559D 0F31 RDTSC 5A559F 0F7EC9 MOVD ECX , MM1 5A55A2 2BC1 SUB EAX , ECX 5A55A4 0F6ED0 MOVD MM2 , EAX 5A55A7 33C0 XOR EAX , EAX 5A55A9 0FA2 CPUID 5A55AB 0F31 RDTSC 5A55AD 0F6EC8 MOVD MM1 , EAX 5A55B0 0F7EC3 MOVD EBX , MM0 5A55B3 33C0 XOR EAX , EAX 5A55B5 0FA2 CPUID 5A55B7 0F31 RDTSC 5A55B9 33C0 XOR EAX , EAX 5A55BB 0FA2 CPUID 5A55BD 0F31 RDTSC 5A55BF 0F6EC8 MOVD MM1 , EAX 5A55C2 0F7EC3 MOVD EBX , MM0 5A55C5 33C0 XOR EAX , EAX 5A55C7 0FA2 CPUID 5A55C9 0F31 RDTSC 5A55CB 0F7EC9 MOVD ECX , MM1 5A55CE 2BC1 SUB EAX , ECX 5A55D0 8BD8 MOV EBX , EAX 5A55D2 0F7ED0 MOVD EAX , MM2 5A55D5 2BC3 SUB EAX , EBX 5A55D7 E81C0DFBFF CALL 5562F8 ( . ) 5A55DC 8945FC MOV FC [EBP] , EAX 5A55DF 8B87581F0000 MOV EAX , 1F58 [EDI] 5A55E5 8D6DFC LEA EBP , FC [EBP] 5A55E8 E8CBD8FAFF CALL 552EB8 ( SP! ) 5A55ED C3 RET NEAR END-CODE ( 195 Bytes )[/code]Реальное время исполнения кода находится между значением его латентности и
временем исполнения кода, когда он полностью находится в кэше процессора.
У кода, который представляет собой цикл, латентность приближается к времени исполнения его из кэша.
|
|
|
|
Добавлено: Чт май 08, 2008 11:27 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
для измерения времени кода
Код: 0 VALUE cfa 0 VALUE CdT
: @t POSTPONE DUP 0xC033 W, \ XOR EAX, EAX 0xA20F W, \ CPUID 0x310F W, \ RDTSC ; IMMEDIATE
: METER \ "name" -- ' TO cfa 0 TO CdT 10 0 DO @t >R cfa EXECUTE @t R> - @t >R @t R> - - I 3 > IF CdT + TO CdT ELSE DROP THEN LOOP CdT 6 / cfa WordByAddr CR TYPE ." [ " . ." Ticks]" S0 @ SP! ;
\ EOF : S1 5 6 NIP ; : S2 5 6 OVER ;
REQUIRE SEE lib\ext\disasm.f
STARTLOG
METER S1 METER S2 нужна длина кода - дорабатываем SEE Код: SEE S1 SEE S2 лог Код: S1 [ 5 Ticks] S2 [ 55 Ticks]
CODE S1 56B6F7 8945FC MOV FC [EBP] , EAX 56B6FA B806000000 MOV EAX , # 6 56B6FF 8D6DFC LEA EBP , FC [EBP] 56B702 C3 RET NEAR END-CODE [ 12 Bytes ]
CODE S2 56B713 8945FC MOV FC [EBP] , EAX 56B716 C745F805000000 MOV F8 [EBP] , # 5 56B71D C745F406000000 MOV F4 [EBP] , # 6 56B724 8B45F8 MOV EAX , F8 [EBP] 56B727 8D6DF4 LEA EBP , F4 [EBP] 56B72A C3 RET NEAR END-CODE [ 24 Bytes ]
Ok
для измерения времени кода
[code]0 VALUE cfa 0 VALUE CdT
: @t POSTPONE DUP 0xC033 W, \ XOR EAX, EAX 0xA20F W, \ CPUID 0x310F W, \ RDTSC ; IMMEDIATE
: METER \ "name" -- ' TO cfa 0 TO CdT 10 0 DO @t >R cfa EXECUTE @t R> - @t >R @t R> - - I 3 > IF CdT + TO CdT ELSE DROP THEN LOOP CdT 6 / cfa WordByAddr CR TYPE ." [ " . ." Ticks]" S0 @ SP! ;
\ EOF : S1 5 6 NIP ; : S2 5 6 OVER ;
REQUIRE SEE lib\ext\disasm.f
STARTLOG
METER S1 METER S2[/code] нужна длина кода - дорабатываем SEE
[code]SEE S1 SEE S2[/code] лог [code]S1 [ 5 Ticks] S2 [ 55 Ticks]
CODE S1 56B6F7 8945FC MOV FC [EBP] , EAX 56B6FA B806000000 MOV EAX , # 6 56B6FF 8D6DFC LEA EBP , FC [EBP] 56B702 C3 RET NEAR END-CODE [ 12 Bytes ]
CODE S2 56B713 8945FC MOV FC [EBP] , EAX 56B716 C745F805000000 MOV F8 [EBP] , # 5 56B71D C745F406000000 MOV F4 [EBP] , # 6 56B724 8B45F8 MOV EAX , F8 [EBP] 56B727 8D6DF4 LEA EBP , F4 [EBP] 56B72A C3 RET NEAR END-CODE [ 24 Bytes ]
Ok[/code]
|
|
|
|
Добавлено: Пн май 05, 2008 18:46 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Спокойно! Такая ошибка в цитировании возникает при использовании фичи "цитировать выделеное", если выделить текст в одном посте, а ссылку по ошибке нажать под именем другого юзера.
Спокойно! Такая ошибка в цитировании возникает при использовании фичи "цитировать выделеное", если выделить текст в одном посте, а ссылку по ошибке нажать под именем другого юзера.
|
|
|
|
Добавлено: Вс май 04, 2008 08:47 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
mOleg писал(а): Pretorian писал(а): переписать компилатор с автоматическим добавлением измерителей к каждому слову ... я не понял, откуда вы взяли цитату. Компилятор переписывать ни в коем случае не надо! Надо наиболее портируемое решение, позволяющее на любом(в идеале) форте запускать указанные слова.
ЭЭЭ, а что я сразу, я про "переписать компилятор" не говорил. Акуратней господа, свои слова за чужие не выдавайте.
[quote="mOleg"][quote="Pretorian"]переписать компилатор с автоматическим добавлением измерителей к каждому слову ...[/quote] я не понял, откуда вы взяли цитату. Компилятор переписывать ни в коем случае не надо! Надо наиболее портируемое решение, позволяющее на любом(в идеале) форте запускать указанные слова.[/quote]
ЭЭЭ, а что я сразу, я про "переписать компилятор" не говорил. Акуратней господа, свои слова за чужие не выдавайте.
|
|
|
|
Добавлено: Вс май 04, 2008 07:46 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Pretorian писал(а): переписать компилатор с автоматическим добавлением измерителей к каждому слову ... я не понял, откуда вы взяли цитату. Компилятор переписывать ни в коем случае не надо! Надо наиболее портируемое решение, позволяющее на любом(в идеале) форте запускать указанные слова. вопрос писал(а): То, что я могу предлоить в меру понимания, это не более чем "копия" известных мне дибаггеров дебаггер, он совсем не в ту тему. Нужно не дебагить, а замерять время исполнения кода, каким образом - это уже второй момент. Еще раз, не нужно мерить время работы каждого слова в задаче (для этого профайлер есть). Надо мерить только время работы указанного куска кода. Вопрос в лучшем синтаксическом окружении, и простейшем, но гарантированно и точно работающей методики. AlexF писал(а): Для измерения скорости библиотека: Код:~pinka/lib/tools/profiler.f не, не подойдет? Думаю, очень хороший вариант.
уже обсуждалось - там есть косяки. Меряет не всегда адекватно, и не совсем применим для нас. Размер кода тоже не замеряется.
[quote="Pretorian"]переписать компилатор с автоматическим добавлением измерителей к каждому слову ...[/quote] я не понял, откуда вы взяли цитату. Компилятор переписывать ни в коем случае не надо! Надо наиболее портируемое решение, позволяющее на любом(в идеале) форте запускать указанные слова.
[quote="вопрос"]То, что я могу предлоить в меру понимания, это не более чем "копия" известных мне дибаггеров[/quote] дебаггер, он совсем не в ту тему. Нужно не дебагить, а замерять время исполнения кода, каким образом - это уже второй момент.
Еще раз, не нужно мерить время работы каждого слова в задаче (для этого профайлер есть). Надо мерить только время работы указанного куска кода. Вопрос в лучшем синтаксическом окружении, и простейшем, но гарантированно и точно работающей методики.
[quote="AlexF"]Для измерения скорости библиотека: Код:~pinka/lib/tools/profiler.f не, не подойдет? Думаю, очень хороший вариант.[/quote]
уже обсуждалось - там есть косяки. Меряет не всегда адекватно, и не совсем применим для нас. Размер кода тоже не замеряется.
|
|
|
|
Добавлено: Ср апр 30, 2008 23:28 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Для измерения скорости библиотека: Код: ~pinka/lib/tools/profiler.f не, не подойдет? Думаю, очень хороший вариант. Протестирован. Работает. На форуме достаточно часто ссылались на ее результаты при сравнении нескольких фрагментов. Подключается с того места кода, откуда нужно отслеживать статистику вызова слов, и далее вывод. Код: REQUIRE ResetProfiles ~pinka/lib/tools/profiler.f : col Color ; : point Point ; : pt1 { ii jj -- } 255 ii jj rgb col ii 20 + jj 20 + point ;
.... и далее определение слов, статистику по которым нужно собрать ....
ResetProfiles \ обнулили счетчики grad-zal \ запустили измеряемый фрагмент... .AllStatistic \ вывели статистику
Для измерения скорости библиотека: [code]~pinka/lib/tools/profiler.f [/code] не, не подойдет? Думаю, очень хороший вариант. Протестирован. Работает. На форуме достаточно часто ссылались на ее результаты при сравнении нескольких фрагментов.
Подключается с того места кода, откуда нужно отслеживать статистику вызова слов, и далее вывод. [code]REQUIRE ResetProfiles ~pinka/lib/tools/profiler.f : col Color ; : point Point ; : pt1 { ii jj -- } 255 ii jj rgb col ii 20 + jj 20 + point ;
.... и далее определение слов, статистику по которым нужно собрать ....
ResetProfiles \ обнулили счетчики grad-zal \ запустили измеряемый фрагмент... .AllStatistic \ вывели статистику [/code]
|
|
|
|
Добавлено: Вт апр 29, 2008 12:34 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
переписать компилатор с автоматическим добавлением измерителей к каждому слову ...
А что имеется ввиду (для не самых понятливых)?
То, что я могу предлоить в меру понимания, это не более чем "копия" известных мне дибаггеров
Для целей испытания каждое слово компилируется так, что
- если в системе присутствует значение 1 у переменной "DEBUG", И если слово вызвано отдельно - происходит переход на такой код, в который включены куски измерителей
- если в системе нулевое значение переменной "DEBUG", ИЛИ если слово вызвано из другого слова (как часть кода) - переход на обычный код
- значение 2 у переменной даст вызов слова с измерением независимо от того, вызвано оно само по себе или в рамках другого слова
Также может быть полезно организовать слово "многократный вызов" , где вызов каждого слова осуществлялся многократно с восстановлением стека перед вызовом или\и участка памяти
ИМХО, разумеется
Я всё таки пока слабо компетентен в Форте
Там, где я что-то тестирую, у меня почти всегда есть функция, формирующая рапорт о результате в удобоваримом виде
переписать компилатор с автоматическим добавлением измерителей к каждому слову ...
А что имеется ввиду (для не самых понятливых)?
То, что я могу предлоить в меру понимания, это не более чем "копия" известных мне дибаггеров
Для целей испытания каждое слово компилируется так, что
- если в системе присутствует значение 1 у переменной "DEBUG", И если слово вызвано отдельно - происходит переход на такой код, в который включены куски измерителей
- если в системе нулевое значение переменной "DEBUG", ИЛИ если слово вызвано из другого слова (как часть кода) - переход на обычный код
- значение 2 у переменной даст вызов слова с измерением независимо от того, вызвано оно само по себе или в рамках другого слова
Также может быть полезно организовать слово "многократный вызов" , где вызов каждого слова осуществлялся многократно с восстановлением стека перед вызовом или\и участка памяти
ИМХО, разумеется
Я всё таки пока слабо компетентен в Форте
Там, где я что-то тестирую, у меня почти всегда есть функция, формирующая рапорт о результате в удобоваримом виде
|
|
|
|
Добавлено: Вт апр 29, 2008 11:30 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
А вот это дельная тема, может тогда все задачи на конкурс выставлять для развития нужных вещей в форте.
А вот это дельная тема, может тогда все задачи на конкурс выставлять для развития нужных вещей в форте.
|
|
|
|
Добавлено: Вт апр 29, 2008 05:53 |
|
|
|
|
|
Заголовок сообщения: |
*замер скорости выполнения алгоритма |
|
|
всвязи с необходимостью нахождения некой оценки решений заданий на конкурсе, возникла следующая практическая задача:
необходим набор методик, позволяющих замерять автоматически:
- скорость отдельных кусков кода,
- длительность работы изучаемого алгоритма,
- размер кода
- проверять баланс стека
- ??? другие возможные параметры
Желательна совместимость а ANSI стандартом, возможность использования решения для замера результатов на разных доступных фортах.
Общий вид решения обсуждаем (предлагайте интерфейс, синтаксис, решение).
Решение победителя будет использоваться в дальнейшем ;)
всвязи с необходимостью нахождения некой оценки решений заданий на конкурсе, возникла следующая практическая задача:
[color=blue]необходим набор методик, позволяющих замерять автоматически: [list][*] скорость отдельных кусков кода, [*] длительность работы изучаемого алгоритма, [*] размер кода [*] проверять баланс стека [*] ??? другие возможные параметры[/list][/color] [color=green]Желательна совместимость а ANSI стандартом, возможность использования решения для замера результатов на разных доступных фортах.[/color]
Общий вид решения обсуждаем (предлагайте интерфейс, синтаксис, решение).
Решение победителя будет использоваться в дальнейшем ;)
|
|
|
|
Добавлено: Пн апр 28, 2008 22:15 |
|
|
|
|