![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#41 |
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
![]()
Немного переделал и упростил.
Чтобы лучше разобраться с потоками почитай вот это: http://www.interface.ru/home.asp?artId=6105 Непосредственно о семафорах: http://frolov-lib.ru/books/bsp/v26/ch4_6.htm http://trubetskoy1.narod.ru/art/synch/semaphore.html
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". |
![]() |
![]() |
![]() |
#42 |
Пользователь
Регистрация: 30.06.2009
Сообщений: 39
|
![]()
Уважаемый Daramant я посмотрел Вашу программу, с кодом до конца не разобрался, но обязательно разберусь, спасибо за помощь. У меня есть пара замечаний ну или как это назвать. Короче я создал файл, того типа, который нужен для загрузки данных в Вашу программу(в файл записал результат достигнутый на моей программе это число в 28795000 степени с количеством цифер 8668160), и загрузил его, Ваша программа после начала обработки не подает ни каких признаков жизни, висит намертво. Даже в логах чисто. И что я еще заметил, она загружает ТОЛЬКО 50% ЦП. Да и еще про оперативную память, на таком числе Ваша программа занимает уже 50 МБ памяти, а моя постоянно 14,5 МБ. Это же получается что по всем показателям Ваша программа затратнее.
Про потоки, по ссылкам которые Вы дали, я еще не читал, но почитаю. Последний раз редактировалось Iong; 07.07.2009 в 13:41. |
![]() |
![]() |
![]() |
#43 | ||||
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
![]() Цитата:
Цитата:
Попробуй назначить потоки на разные процессоры, для этого: в модуле uSolver в самом низу в разделе initialization после кода создания потоков: Код:
Код:
Цитата:
Цитата:
Код:
Память выделяется при создании строк в которые преобразуется массив, в функции GetArrayAsString(). Это функция вызывается при записи в mmLog и сохранении/загрузке из файла. P.S. Если размер используемой памяти критичен, можно переписать функции сохранения/загрузки данных из файла.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". Последний раз редактировалось Daramant; 07.07.2009 в 15:30. |
||||
![]() |
![]() |
![]() |
#44 | ||
Пользователь
Регистрация: 30.06.2009
Сообщений: 39
|
![]() Цитата:
С оперативной памятью проблем пока нет, да думаю и не будет, а то что 50 МБ занимает, это я так просто подметил этот факт. Еще одно замечание, Кнопка "Suspend" не работает при обработки большого числа. Цитата:
Закомментировал вывод в mmLog на 220 строке, в производительности прирост заметен. Сравнил по скорости обработки Вашу и мою программы, моя жрет 50% ЦП а дает такую же скорость обработки. Это не рационально:-( должна быть разница в скорости как минимум на 30-40% |
||
![]() |
![]() |
![]() |
#45 | |
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
![]()
Подвисало от:
Код:
Также закомментируй тело процедуры ShowResults; Это увеличит производительность и не будет подвисать. И в 224 строке убери условие Цитата:
т.е. оставь только Application.ProcessMessages; тогда форма подвисать не будет. Также можно заменить: Код:
Код:
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". |
|
![]() |
![]() |
![]() |
#46 |
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
![]()
Я немного оптимизировал алгоритм, по тестируй его, должен работать быстрее.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? | Mclaren | Помощь студентам | 2 | 27.04.2009 22:37 |
готовое приложение | ComeToDaddy | Помощь студентам | 17 | 03.04.2009 18:25 |
консольное приложение | user_jasser | Общие вопросы Delphi | 3 | 17.10.2008 12:17 |
Консольное приложение | a_priori | Общие вопросы Delphi | 6 | 12.03.2008 08:33 |
Пароль на приложение | Chals | Общие вопросы Delphi | 6 | 24.11.2007 21:32 |