Информация об изменениях

Сообщение Re[6]: Потоки, net, потеря производительности от 12.02.2015 1:32

Изменено 12.02.2015 1:43 inevity

Здравствуйте, cures, Вы писали:

C>Ох! Смешались в кучу кони, люди, и залпы тысячи орудий...

АХАХАХ! Да уж, это чистая правда! У меня схожие мысли, когда я смотрю на код. Да и писал код по вечерам, даже если что и мог сделать — уже даже этого не мог сделать нормально.
Вообще, сначала написал код, а потом подумал о потоках, опять пришлось притягивать за уши... Плюс результат нужен был быстрее, вот и получилось "я его слепила из того, что было".

C>Если я понимаю правильно, основная работа должна происходить в makesession? Особых вычислений там не заметил (они тщательно замаскированы?), а вот new там хватает. Хип наверняка общий, за него идёт конкуренция.

C>Дельфи у меня нет, это то, что бросается в глаза.

Да, основная работа там. New — я не знал какой функционал потребуется в будущем, и все делал через классы(которые я мог выделить логически). Затем на классы наворачивал функции и прочее.
Я и подумать не мог, что тут кроется проблема...
Особых вычислений, действительно, нет. Там генерация псевдослучайных чисел и логическая обработка с "расфасовкой" по объектам.

C>Ещё подозрительны DoEvents, там возможно повторное вхождение в эти функции? Лучше бы логику UI и логику вычислений разнести, потоки по завершении могут дёргать UI колбэки для обновления состояния. Впрочем, об этом Вам там уже написали, Вы ответили, что влиять не должно.


DoEvents я уже сделал вообще "в тупую", т.к. после завершения потоков производительность не нужна вообще и никаких критических мест нет.

C>Для более тщательного анализа лучше бы выделить главную вычислительную часть отдельно и тестировать вообще без UI.

По-хорошему вообще надо было все делать не так... Но, надеюсь, профайлер поможет обнаружить проблему без переделывания кода.
Re[6]: Потоки, net, потеря производительности
Здравствуйте, cures, Вы писали:

C>Ох! Смешались в кучу кони, люди, и залпы тысячи орудий...

АХАХАХ! Да уж, это чистая правда! У меня схожие мысли, когда смотрю на код. Да и писал по вечерам, даже если что и мог сделать — уже даже этого не мог сделать нормально.
Вообще, сначала написал код, а потом подумал о потоках, опять пришлось притягивать за уши... Плюс результат нужен был быстрее, вот и получилось "я его слепила из того, что было".

C>Если я понимаю правильно, основная работа должна происходить в makesession? Особых вычислений там не заметил (они тщательно замаскированы?), а вот new там хватает. Хип наверняка общий, за него идёт конкуренция.

C>Дельфи у меня нет, это то, что бросается в глаза.

Да, основная работа там. New — не знал какой функционал потребуется в будущем, и все делал через классы(которые мог выделить логически). Затем на классы наворачивал функции и прочее.
Я и подумать не мог, что тут кроется проблема...
Особых вычислений, действительно, нет. Там генерация псевдослучайных чисел и логическая обработка с "расфасовкой" по объектам.

C>Ещё подозрительны DoEvents, там возможно повторное вхождение в эти функции? Лучше бы логику UI и логику вычислений разнести, потоки по завершении могут дёргать UI колбэки для обновления состояния. Впрочем, об этом Вам там уже написали, Вы ответили, что влиять не должно.


DoEvents уже сделал вообще "в тупую", т.к. после завершения потоков производительность не нужна вообще и никаких критических мест нет.

C>Для более тщательного анализа лучше бы выделить главную вычислительную часть отдельно и тестировать вообще без UI.

По-хорошему вообще надо было все делать не так... Но, надеюсь, профайлер поможет обнаружить проблему без переделывания кода.