Название: ультралегкое приложение на Qt Отправлено: Fess от Май 31, 2011, 11:03 Всем доброго времени суток!
Мне нужно максимально облегченное по потреблению ресурсов приложение. Это просто иконка в трее, которая по желанию юзера запускает те или иные действия основного "тяжелого" приложения. Сборка всего с core & gui занимает 8-10 Мб памяти в релизе. Кто может меньше? Название: Re: ультралегкое приложение на Qt Отправлено: GreatSnake от Май 31, 2011, 11:20 Цитировать Кто может меньше? WinAPI либо Xlib)Название: Re: ультралегкое приложение на Qt Отправлено: Fess от Май 31, 2011, 11:41 хотелось бы остаться на Qt..
нужно кросс-платформенное решение Название: Re: ультралегкое приложение на Qt Отправлено: GreatSnake от Май 31, 2011, 11:52 Сборка всего с core & gui занимает 8-10 Мб памяти в релизе. Т.е. запущенное приложение в памяти столько занимает или?Название: Re: ультралегкое приложение на Qt Отправлено: LisandreL от Май 31, 2011, 11:57 хотелось бы остаться на Qt. Тогда смиритесь с размером.нужно кросс-платформенное решение Если важен размер дистрибутива, то некоторый выигрыш даст статическая пересборка без лишнего, вроде q3-support и т.п. Большой выигрышь в объёме даст вам upx (получал бинарники меньше 4 метров). Но всё равно ультратонким, без отказа от Qt классов, ваше приложение не будет. Название: Re: ультралегкое приложение на Qt Отправлено: Denjs от Май 31, 2011, 14:19 +1.
Qt дает кроссплатформенность, удобство и независимость, но за все надо платить. Вам надо таскать с собой библиотеки. Минимум что вам понадобится - это релизные билиотеки QtGui и ещё что-то.... в 16 мб переносимого дистритутива вы уложитесь. Это точно так-же как любое дот-нет приложение требует тянуть и обнослять для себя нет-фреймворк с оффсайта майкрософта. иначе оно рпосто работать не будет (и это при том, что дот-нет не дает и рядом особо того же что Qt). Хотите "ультра-легкое" - используйте только то , что идет в поставке и операционной системой. Но имхо - 16-30 мб библиотек - таскаемых вместе с приложением, да 30-40 мб в памяти для полновесного гуи-прилодения - имхо сегодня это - ну "такие мелочи".... имхо)))) я клиентам по 200 мб приложения в дебаг-сборках отдавал - и все довольны были ;D Название: Re: ультралегкое приложение на Qt Отправлено: Fess от Май 31, 2011, 17:09 борьба за место в оперативке и только..
upx может дать какой-либо выигрыш по памяти? может какие-нибудь флаги компилера/линкера посоветуете? Название: Re: ультралегкое приложение на Qt Отправлено: asvil от Май 31, 2011, 17:13 О придумал. Cпилите исходники qtsystemtrayicon, правда кроме них еще какой-никакой eventloop понадобиться.
А вообще, вообще. Нафик вашему "Пользователю" этот fast access to application. Я вот например никогда не пользуюсь. Вы может пожалейте его панельку с часиками. Там еще у виндусовых пользователей куча граф., звук. драйверов, антивирусов, статус сети...можно до бесконечности. Название: Re: ультралегкое приложение на Qt Отправлено: GreatSnake от Май 31, 2011, 17:36 Цитата: Филоненко Михаил Cпилите исходники qtsystemtrayicon Кстати, верная идея.Нужно только переписать QSystemTrayIcon так, чтобы он не использовал QIconEngine/QImageReader/QFontEngine/QFontDatabase и др. тяжелые вещи. Только вот нужно ли это? Название: Re: ультралегкое приложение на Qt Отправлено: LisandreL от Май 31, 2011, 21:59 upx может дать какой-либо выигрыш по памяти? Какой-то может, но скорее всего идёт распаковка оригинального исполняемого файла в память и выйдет тож на тож.Вообще попробую завтра провести эксперимент. Название: Re: ультралегкое приложение на Qt Отправлено: LisandreL от Июнь 01, 2011, 11:09 Вообще попробую завтра провести эксперимент. Итак, тестовая программа:Код
Прараметры: ос - Windows 7 x64 компилятор - mingw Qt - 4.7.3 1) Динамическая сборка Место на диске: 12 525 666 байт (c dll) Память (рабочий набор/частный рабочий набор/выделенная память): 6 864КБ, 1 176КБ, 2 948КБ. 2) Статическая сборка ( -static -release -no-exceptions -no-qt3support -nomake demos -nomake examples ) Место на диске: 8 766 976 байт Память (рабочий набор/частный рабочий набор/выделенная память): 5 864КБ, 1 048КБ, 2 668КБ. 3) Статическая сборка + upx ( --ultra-brute ) Место на диске: 2 831 872 байт Память (рабочий набор/частный рабочий набор/выделенная память): 13 256КБ, 9 788КБ, 9 988КБ. Очевидно upx распаковывает сжатый оригинальный исполняемый файл в память, поэтому для экономии памяти он непригоден. Название: Re: ультралегкое приложение на Qt Отправлено: lit-uriy от Июнь 01, 2011, 11:22 >>но скорее всего идёт распаковка оригинального исполняемого файла в память
распаковка идёт во временный каталог, а оттуда запуск. Отсюда проблема - текущий путь к приложению не тот, где лежал сжатый бинарь. П.С. В доке про UPX это явно сказано Название: Re: ультралегкое приложение на Qt Отправлено: lit-uriy от Июнь 01, 2011, 11:30 по поводу облегчения:
можно самому собрать Qt с определённым конфигом, тыц (http://www.forum.crossplatform.ru/index.php?showtopic=981&view=findpost&p=17186) Название: Re: ультралегкое приложение на Qt Отправлено: LisandreL от Июнь 01, 2011, 12:14 Отсюда проблема - текущий путь к приложению не тот, где лежал сжатый бинарь. Под Windows нет такой проблемы - qApp->applicationDirPath() и qApp->applicationFilePath() возвращают правильные пути, да и судя по объёму занятой памяти извлечение идёт именно туда.Название: Re: ультралегкое приложение на Qt Отправлено: lit-uriy от Июнь 01, 2011, 13:44 >>Под Windows нет такой проблемы - qApp->applicationDirPath()
У меня под виндовоз именно этот метод возвращал путь к %TEMP%. также себя вели и пути заданные через "этот" каталог (".") П.С, пробовал UPX 1,5 года назад. Может что-то и изменилось с тех пор Название: Re: ультралегкое приложение на Qt Отправлено: Fess от Июнь 02, 2011, 04:55 Огромное спасибо всем за идеи и отдельно LisandreL за интересный эксперимент.
Буду делать статическую сборку Qt для модуля трея и, возможно, стоит еще поэкспериментировать с опциями конфигурации (QConfig в руки!) и компиляции. Но это все ближе к очередному релизу.. :) |