Насколько велика приложение iPhone Objective-C против приложения MonoTouch?
Я рассматриваю использование MonoTouch для разработки iPhone, но размер полезной нагрузки является важным фактором.
Для пользователя, который ранее не устанавливал Mono на своем iPhone, какой размер приложения Objective-C Hello World будет сравниваться с приложением MonoTouch "Hello World"?
Более конкретно, что такое ок. количество байтов, которые необходимо загрузить, и что такое ок. количество используемых байтов после установки?
Ответы
Ответ 1
Программа "Hello world" в Objective-C занимает 50 килобайт (вся папка .app).
С MonoTouch аналогичное приложение Hello World занимает 5 Мб (вся папка .app), что совсем не плохо, учитывая, что в нем есть среда выполнения с мусорной коллекцией.
Ответ 2
В 1.5 Monotouch
Сборка релиза - это приложение, созданное с лицензией на распространение - и с только настройками проекта по умолчанию, составляет 5 МБ. Из этих 4,3 МБ - двоичный исполняемый файл.
По моему опыту они часто увеличиваются до 10 МБ, и форумы рисуют ту же картину. Магазин приложений сообщает о разархивированном размере, однако они загружаются в архиве. В архиве это около 3 МБ, что даже на 3G, хорошо.
![]()
На мой взгляд, большинство людей не будут смотреть на размер файла перед загрузкой приложения, и особенно не заботятся. Ограничение на скачивание 3G в магазине приложений теперь составляет 20 МБ, что вполне соответствует размеру MonoTouch.
Да, если вы играете за адвоката дьявола, это на много порядков больше, чем у Objective-C, и может отпугнуть нескольких людей, которые беспокоятся о том, чтобы занять на 4-10 МБ больше своих 16 ГБ. Однако есть также время для выхода на рынок и существующих инструментов, доступных для .NET. Я разрабатываю и собираю все свои приложения MonoTouch в Visual Studio 2010, затем тестирую их на Mac, и я не думаю, что даже Apple будет утверждать, что их IDE близка к лидеру отрасли.
Ответ 3
Из этого вопроса в MonoTouch и размер исполняемых файлов:
MonoTouch не переводит на Obj-c. Он компилируется в .NET IL, затем компилирует (таким же образом компилятор JIT, но до run - следовательно, компилятор "раньше времени" ) в собственный ARM-код.
так:
Obj-C → GCC (или LLVM) → код ARM
vrs MT:
С# → IL → (компилятор AOT) → Код ARM
Выходные двоичные файлы в 3.x больше, потому что вы также включаете много .NET framework (ну, Mono Framework, но то же самое), так что если вы, например, используете System.Xml, он должен включать это в вывод - то же самое с System.dll и т.д. Компонент довольно умный, но вывод бинарные файлы всегда будут больше.
Для меня важна только величина времени загрузки и замятие двоичный размер. Zipped binary для приложения "hello world" составляет около 2.5-3meg(меньше в 4.x Мне сказали) vrs о 300k для obj-c. Разница становится все меньше и меньше, чем больше вы добавляете, так как он включает только таких, как system.dll один раз. Время загрузки для MT vrs Obj-c, делая то же самое в в то же время, достаточно близко к тому же. Либо можно сделать медленно загружайте (просто сделайте что-то долгое время в своем FinishedLaunching не помещая его в другой поток).
Далее ответчик говорит, что он чувствует себя более продуктивным с MonoTouch, чем Objective-C. YMMV.