Страница: 1 | 2 | 3 |
Вопрос: GDI vs GDI+
Добавлено: 14.04.05 19:41
Автор вопроса: Artyom
Ответы
Всего ответов: 45
Номер ответа: 16
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #16
Добавлено: 15.04.05 19:10
Насколько я понимаю сравнивается не однотипные участки, (см.заголовок темы, созданный тобой же) мы сравниваем GDI и GDI+.
Если GDI+ не позволяет разом рисовать, то незачем возмущаться Смирись с теми возможностями, которые ты выбрал. А то начинается: у меня комп тормозит и т.д. Несерьёзно это.
А 280 - это жутко много. )).
Номер ответа: 17
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #17
Добавлено: 15.04.05 19:21
Странно. Скинь мне на мыло программу (exe)
Номер ответа: 18
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #18
Добавлено: 15.04.05 19:22
Не надо ляля. Позволяет.
Номер ответа: 19
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #19
Добавлено: 15.04.05 19:23
Еще раз перечитай - у человека на более слабой машине .NET-код сработал быстрее, чем на моей более мощной. Тормозит МОЙ комп.
Номер ответа: 20
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #20
Добавлено: 15.04.05 19:31
Ушло...
Номер ответа: 21
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #21
Добавлено: 15.04.05 19:44
Artyom, это всё очень несерьёзно и очень смешно
У меня комп не тормозит, кидай свою программу, ко мне, или повесь её на webfiles.ru
Посмотрю, сколько она работает на нетормозящем компе
А про ляля - это к чему? детский сад, что-ли?
Если позволяет - сделай так, как получается быстрее, в чем дело? Кто мешает?
Номер ответа: 22
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #22
Добавлено: 15.04.05 20:09
Вот тебе мой результат для сравнения:
Залить градиентом 700х700 и нарисовать эту 40-угольную кучерявую голову негра - 10,4 мс. Машина примерно такая же как у тебя: Athlon 2200+, памяти даже меньше чем у тебя: всего 128 Мб.
Получается примерно раз в 30 быстрее, чем .Net
Есть ещё вопросы?
По-прежнему утверждаешь, что .NET - самой быстрый и мощный инструмент? Или уже нет?
Номер ответа: 23
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #23
Добавлено: 15.04.05 20:30
Получается примерно раз в 30 быстрее, чем .Net
Есть ещё вопросы?
Потише, потише.
Я знаю, что ты сейчас начнешь ухмыляться и тыкать в мою сторону пальцем, но у меня реально тормозит машина.
Я не знаю, с чем это связано - с тем, что это серверная ОС или с тем, что я ее неправильно настроил, но факт - она тормозит.
GSerg прислал мне свой пример, но в нем один нюанс - он рисует прямо на PictureBox, а я - сначала в битмап в памяти, а потом этот битмап ложу на форму.
Так вот, для установки более честных условий я сделал, чтоб мой еод работал точно так же - в результате он выполнялся порядка 18 секунд.
Я не знаю, с чем это связано, например, на другой машине с Win XP Pro SP2 это работает 102 мс.
Дадно, мою ормозную машину коментировать не надо.
Вобщем, уточняю сразу - рисуем сразу на поверхности PictureBox, оба примера (VB .NET и VB6 работают именно так). Если ты рисуешь именно на поверхности PictureBox, то оба примера можешь забрать прямо у меня на сайте.
Код GSerg требует, очевидно, msvbvm60.dll, мой код - .NET FW 2.0 (именно 2.0)
http://artyom.soobcha.org/gdi.rar
Номер ответа: 24
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #24
Добавлено: 15.04.05 20:31
Ты мои слова не перекручивай - я не говорил, что он "самый быстрый".
PS Свой exe ты мне тоже скинь.
Номер ответа: 25
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #25
Добавлено: 15.04.05 21:02
На пикчербоксах не рисуют. Это к сведению.
Рисуют на dc - device context.
Ты рисуешь на dc пикчербокса, я рисую на dc окна.
Никакой разницы не вижу. Оба dc обладают идентичными свойствами.
и твоих слов никто не перекручивает, просто у тебя память коротковата.
А framework 2.0 где? Есть ссылка? Чтобы без посторонних файлов?
GSerg, я твой код немного подрихтовал:
GetTickCount при малых временах ведет себя не совсем корректно: может округлять. Поэтому сделал цикл из 10 вызовов Paint и поделил на 10.
Получилось у меня 11 мс на один вызов.
Номер ответа: 26
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #26
Добавлено: 15.04.05 21:18
Кстати, посмотрел пример GSerg'a - он тоже рисует не на dc пикчербокса, а на dc окна.
Сейчас сделаю второй пример - через промежуточный битмап. Посмотрим.
Номер ответа: 27
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #27
Добавлено: 15.04.05 21:30
Рисуют на dc - device context.
Хватит придираться - я уже не помню, когда последний раз читал документацию по GDI, поэтому сейчас и не вспомнил этот термин.
.NET Framework 2.0 (24 мб)
http://download.microsoft.com/download/2/d/9/2d96a8eb-a612-46ad-b4ed-6497a8e1f245/dotnetfx.exe
Сейчас сделаю второй пример - через промежуточный битмап. Посмотрим.
Ээээ Без самодеятельности! Все примеры тестируются таким образом, что рисуют на dc окна.
Номер ответа: 28
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #28
Добавлено: 15.04.05 21:57
Наши многоуважаемые низкоуровневые программисты наконец смирились, что GDI+ никак не медленне GDI, а может даже и быстрее и не хотфт опозориться
Кроме того, о квалификации программиста, комп которого работает в 100 раз медленнее при прочих равных, можно составлять анекдоты
Номер ответа: 29
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #29
Добавлено: 15.04.05 22:11
Не нервничай! Рисую в битмапе в памяти, затем перегружаю из памяти в dc окна. Уже готово. Результат 14 мс.
Сейчас на мыло отправлю оба.
Один называется Gradient_Bitmap - рисует сначала в память, затем рисунок из памяти перекладывает на dc окна.
Второй называется Gradient_Direct - рисует сразу на dc окна.
Кто из них кто, можно и без названия определить.
Тот который через память, моргать не будет (BitBlt скрадывает), который напрямую - будет помаргивать в процессе рисования.
Оба файла рисуют в цикле десять раз, затем время делится на 10. Т.к. при малых временах (если один раз рисовать) GettickCount практически всегда показывает 15-16 мс. Чтобы уйти от флуктуаций и делается цикл.
Номер ответа: 30
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #30
Добавлено: 15.04.05 22:53
Слушай, брателло, ты принимаешь участие в бенчмаркинге? Нет? Тогда будь добр, просто промолчи, про себя подумай - ах, какой Аретм плохой, так ему и надо, а высказываться зедсь опять не нужно.
Просто тот факт, что ты по каждой теме хочешь что-то сказать, даже если тема тебя не касается, меня бесит.
Извини, хотел тебе это на мыло написать но, кажется, оно у тебя не работает, видимо.
Короче, это не по теме.