Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];

Вниз

Супер-пупер-мега-сплэш   Найти похожие ветки 

 
Юрий Зотов ©   (2009-08-19 13:21) [120]

> Andy BitOff ©   (19.08.09 13:14) [119]

1. GetMessage сам ожидает сообщения, поэтому Sleep в цикле выборки действительно не нужен. Причина 100%-ной загрузки в чем-то другом.

2. Говорят (сам не проверял), что вместо Sleep(0) лучше использовать SwitchToThread. Результат тот же, но якобы жрет меньше тактов.


 
Leonid Troyanovsky ©   (2009-08-19 13:26) [121]


> Andy BitOff ©   (19.08.09 13:14) [119]

> Без слипа в однопроцессорных системах загрузка CPU 100%

Неа, ты чего-то путаешь.

> Хм... Так, что ли "if (wParam and $FFF0) = SC_CLOSE then"?

Да.

--
Regards, LVT.


 
Andy BitOff ©   (2009-08-19 13:28) [122]


> Юрий Зотов ©   (19.08.09 13:21) [120]

Ну, я не знаю в чем может быть другом. С ним не грузит, без него грузит. На самом деле я даже проверить не могу, у меня нигде не грузит, но у меня нет и одноядерных/процессорных машин, просто поступали жалобы и методом анализа компьютеров выяснилось, что загружает там где одно...

> SwitchToThread

Мне не проверить. Конечно, полагаясь на ваш опыт я могу поставить не глядя.


 
Andy BitOff ©   (2009-08-19 13:32) [123]

Со SwitchToThread визуально работает без изменений ;)


> Leonid Troyanovsky ©   (19.08.09 12:46) [118]
> Такая вещь как FileExists совершенно бесполезна.

Да, действительно. Исправлю.


 
Andy BitOff ©   (2009-08-19 13:34) [124]


> Юрий Зотов ©   (19.08.09 13:21) [120]
> GetMessage сам ожидает сообщения

Может у меня проблема в том что, он, собственно, и не успевает ждать? У меня сразу же стартует таймер.


 
Дмитрий Белькевич   (2009-08-19 13:38) [125]

Есть два предложения по сплэшАм. Сейчас как-то всё однообразно - максимум - выпирающие куски картинки.

1. Вместо сплэша показывать порно. Тянуть картинки с какого-нить сайта. Успех гарантирован.

2. Поместить на сплэш какую-нибудь увлекательную игру. Тетерис, например. Состояние запоминать, и в следующую загрузку продолжать с того же места.


 
Anatoly Podgoretsky ©   (2009-08-19 13:41) [126]

> Andy BitOff  (19.08.2009 13:28:02)  [122]

Не грузит с ним, это обман зрения, просто нет других потоков, естественно управление постоянно и сразу отдается ему, а sleep(1) и другие ожидающие функции сбивают это поведение.


 
Andy BitOff ©   (2009-08-19 13:47) [127]


> Anatoly Podgoretsky ©   (19.08.09 13:41) [126]

Анатолий, ну как я это объясню человеку, который нажимает CAD и видит в колонке CPU значение 100. Что мне ему сказать? Не верь глазам своим, слушай меня.


 
Leonid Troyanovsky ©   (2009-08-19 13:48) [128]


> Anatoly Podgoretsky ©   (19.08.09 13:41) [126]

> Не грузит с ним, это обман зрения

А если грузит без него, то это значит через GetMessage
идет непрерывный поток сообщений и с этим надо
внимательно разбираться.

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2009-08-19 14:09) [129]

> Andy BitOff  (19.08.2009 13:47:07)  [127]

А ничего не надо говорить, не его это дело, но если тебя это беспокоит, то отдавай слайсы с помощью sleep(1) но это уже психологическое.


 
Anatoly Podgoretsky ©   (2009-08-19 14:11) [130]


> Leonid Troyanovsky ©   (19.08.09 13:48) [128]

Это надо изменить структуру программы, а не маскировать это с помощью sleep


 
Leonid Troyanovsky ©   (2009-08-19 16:23) [131]


> Anatoly Podgoretsky ©   (19.08.09 14:11) [130]

> Это надо изменить структуру программы, а не маскировать
> это с помощью sleep

Во, я, наконец, вспомнил, как его зовут - костыль!
Т.е., в релизах такого уже быть не должно.

--
Regards, LVT.


 
Юрий Зотов ©   (2009-08-19 17:08) [132]

> Andy BitOff ©   (19.08.09 13:32) [123]

> Со SwitchToThread визуально работает без изменений

То есть, со 100%-ной загрузкой CPU? Тогда все в порядке.

В доке сказано, что если в системе нет нуждающихся в CPU потоков, то SwitchToThread поток не переключит. Значит, в системе активно работает только один поток - Ваш. И система, естественно, отдает ему все процессорное время.

Никакого криминала в этом нет, так и надо объяснить юзеру. Появится второй активный поток - система начнет делить время. Например, пусть запустит несколько экземпляров программы и посмотрит, как раздаются слоны.


 
Leonid Troyanovsky ©   (2009-08-19 19:19) [133]


> Юрий Зотов ©   (19.08.09 17:08) [132]

> То есть, со 100%-ной загрузкой CPU? Тогда все в порядке.

Чего ж тогда многопроцессорные не жалуются?
Тут, IMHO, стоит неспеша разобраться.

Хотя (т.к. я не запускал пример by Andy из-за большого кол-ва requried),
могу допустить, что все поглощает анимация.

--
Regards, LVT.


 
Andy BitOff ©   (2009-08-19 19:28) [134]

> Юрий Зотов ©   (19.08.09 17:08) [132]
> То есть, со 100%-ной загрузкой CPU? Тогда все в порядке.

Нет. У меня такой загрузки нет. Поэтому и проверить не могу.


 
Leonid Troyanovsky ©   (2009-08-19 19:43) [135]


> Andy BitOff ©   (19.08.09 19:28) [134]

> Нет. У меня такой загрузки нет. Поэтому и проверить не могу.

А если заказать потокам процесса выполняться только на одном процессоре?

--
Regards, LVT.


 
Andy BitOff ©   (2009-08-19 20:24) [136]

> Leonid Troyanovsky ©   (19.08.09 19:43) [135]

Как?
Проверить смогу только завтра.


 
Leonid Troyanovsky ©   (2009-08-19 20:34) [137]


> Andy BitOff ©   (19.08.09 20:24) [136]

SetAffinityMask?

--
Regards, LVT.


 
Andy BitOff ©   (2009-08-19 20:42) [138]

Спасибо. Завтра попробую.


 
Loginov Dmitry ©   (2009-08-19 22:35) [139]

> [88] Суслик_   (18.08.09 17:51)


Рад, что от разработки есть польза :)
Там косяк есть кстати: проверяется результат функции RegisterClass(),
однако результат 0 еще не свидетельствует об ошибке, нужно еще
GetLastError сравнивать с ERROR_CLASS_ALREADY_EXISTS, иначе после
черезы LoadLibrary / FreeLibrary перестает работать.


 
Andy BitOff ©   (2009-08-20 10:16) [140]


> Leonid Troyanovsky ©   (19.08.09 20:34) [137]

Всё равно не выходит 100, максимум чего добиваюсь 40, в среднем 15-18. При обычном (без установки SetThreadAffinityMask) 2-5.


 
Юрий Зотов ©   (2009-08-22 20:59) [141]

> Rouse_ ©   (18.08.09 12:38) [63]

Думаю, ты все же неправ, Саид. RedrawWindow здесь не вызывается, а SetWindowPos работает ничуть не хуже ShowWindow и была использована для центрирования сплэша одновременно с его показом.

> DVM ©   (18.08.09 23:30) [90]

> Нету проверки на результат RegisterClassEx(),
> CreateWindowEx(), LoadBitmap()

Специально. Проверки подобного рода я считаю параноидальными, чем-то вроде этого:
i := 3;
if i <> 3 then ...

Теоретически, присваивание тоже может не сработать, но вероятность этого слишком ничтожна, чтобы на нее закладываться и загромождать код проверками.

> Отсутствует закрытие хендла ThreadHandle
А вот за это спасибо. Действительно, упустил.

> All

Здесь приведен модифицированный вариант сплэша, в котором устранены отмеченные недостатки и решена проблема вывода главной формы программы на передний план:
http://www.delphikingdom.com/asp/articles_forum.asp?ArticleID=1411



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.76 MB
Время: 0.055 c
15-1250784466
Пит
2009-08-20 20:07
2009.10.25
Игра меньше тормозит при большем разрешении


15-1251405006
Юрий
2009-08-28 00:30
2009.10.25
С днем рождения ! 28 августа 2009 пятница


2-1251128591
Danco
2009-08-24 19:43
2009.10.25
Массивы


2-1251882705
sanx
2009-09-02 13:11
2009.10.25
Получить от компилятора текущую дату в констатнту, как?


2-1251358261
parasolka
2009-08-27 11:31
2009.10.25
Выравнивание в DBGrid.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский