|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.07.2009, 23:09 | #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
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". |
07.07.2009, 13:37 | #42 |
Пользователь
Регистрация: 30.06.2009
Сообщений: 39
|
Уважаемый Daramant я посмотрел Вашу программу, с кодом до конца не разобрался, но обязательно разберусь, спасибо за помощь. У меня есть пара замечаний ну или как это назвать. Короче я создал файл, того типа, который нужен для загрузки данных в Вашу программу(в файл записал результат достигнутый на моей программе это число в 28795000 степени с количеством цифер 8668160), и загрузил его, Ваша программа после начала обработки не подает ни каких признаков жизни, висит намертво. Даже в логах чисто. И что я еще заметил, она загружает ТОЛЬКО 50% ЦП. Да и еще про оперативную память, на таком числе Ваша программа занимает уже 50 МБ памяти, а моя постоянно 14,5 МБ. Это же получается что по всем показателям Ваша программа затратнее.
Про потоки, по ссылкам которые Вы дали, я еще не читал, но почитаю. Последний раз редактировалось Iong; 07.07.2009 в 13:41. |
07.07.2009, 15:12 | #43 | ||||
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
Цитата:
Цитата:
Попробуй назначить потоки на разные процессоры, для этого: в модуле uSolver в самом низу в разделе initialization после кода создания потоков: Код:
Код:
Цитата:
Цитата:
Код:
Память выделяется при создании строк в которые преобразуется массив, в функции GetArrayAsString(). Это функция вызывается при записи в mmLog и сохранении/загрузке из файла. P.S. Если размер используемой памяти критичен, можно переписать функции сохранения/загрузки данных из файла.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". Последний раз редактировалось Daramant; 07.07.2009 в 15:30. |
||||
07.07.2009, 16:43 | #44 | ||
Пользователь
Регистрация: 30.06.2009
Сообщений: 39
|
Цитата:
С оперативной памятью проблем пока нет, да думаю и не будет, а то что 50 МБ занимает, это я так просто подметил этот факт. Еще одно замечание, Кнопка "Suspend" не работает при обработки большого числа. Цитата:
Закомментировал вывод в mmLog на 220 строке, в производительности прирост заметен. Сравнил по скорости обработки Вашу и мою программы, моя жрет 50% ЦП а дает такую же скорость обработки. Это не рационально:-( должна быть разница в скорости как минимум на 30-40% |
||
07.07.2009, 18:01 | #45 | |
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
Подвисало от:
Код:
Также закомментируй тело процедуры ShowResults; Это увеличит производительность и не будет подвисать. И в 224 строке убери условие Цитата:
т.е. оставь только Application.ProcessMessages; тогда форма подвисать не будет. Также можно заменить: Код:
Код:
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". |
|
07.07.2009, 23:04 | #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 |