Насколько велико приложение Objective-C для iPhone по сравнению сприложение MonoTouch?

StackOverflow https://stackoverflow.com/questions/1444777

Вопрос

Я рассматриваю возможность использования MonoTouch для некоторых разработок iPhone, но размер полезной нагрузки является важным фактором.

Для пользователя, который никогда раньше не устанавливал Mono на свой iPhone, каков был бы размер приложения Objective-C "Hello World" по сравнению с приложением MonoTouch "Hello World"?

Более конкретно, что такое ок.количество байт, которые необходимо загрузить, и каково ок.количество байт, используемых после установки?

Это было полезно?

Решение

A " Привет, мир " Программа в Objective-C занимает 50 КБ (вся папка .app). С MonoTouch, похожим "Hello World" Приложение занимает 5 МБ (целая папка .app), что совсем неплохо, учитывая, что в нем есть среда выполнения со сборкой мусора.

Другие советы

В версии 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 близка к лидеру отрасли.

Начиная с этого вопроса Монотонность и размер исполняемых файлов:

MonoTouch не переводится в Obj-c.Он компилируется в .NET IL, затем компилирует это (тем же способом, что и JIT-компилятор, но перед его запуском - следовательно, компилятор "с опережением времени") в собственный ARM-код.

итак:

Obj-C -> GCC (или LLVM) -> ARM-код

vrs MT:

C # -> IL -> (AOT-компилятор) -> ARM-код

Выходные двоичные файлы в 3.x больше, потому что вы также включаете много Платформа .NET framework (ну, фреймворк Mono, но тот же-тот же), поэтому, если вы, например, используете System.Xml, он должен включить это в выходные данные - то же самое с System.dll и т.д.Компоновщик довольно умен, но выходные двоичные файлы всегда будут более крупный.

Для меня важен только размер, это время загрузки и сжатый двоичный размер. Сжатый двоичный файл для приложения "hello world" составляет около 2,5-3meg (мне сказали, что меньше в 4.x) vrs о 300 тысяч для obj-c.Разница становится все меньше и меньше, чем больше вы добавляете, поскольку она включает подобные system.dll только один раз.Время загрузки для vRS в Obj-C и Т, делаешь одни и те же вещи в то же время, достаточно близко к тому же.Любой из них можно заставить загружаться медленно (просто сделайте что-нибудь длительное в вашем FinishedLaunching , не помещая это в другой поток).

Далее ответчик говорит, что, по его мнению, он более продуктивен с MonoTouch, чем с Objective-C.ИММВ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top