flex-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Harui (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FLEX-34859) Compilation AIR application of IOS with modules
Date Wed, 27 May 2015 15:16:17 GMT

    [ https://issues.apache.org/jira/browse/FLEX-34859?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14561125#comment-14561125
] 

Alex Harui commented on FLEX-34859:
-----------------------------------

In my understanding, every AS class is represented in the SWF as a set of data structures
that reference the byte code of the method bodies, plus more "class init" byte code that runs
once to set up the class to be instantiated.  As you add more and more classes to a SWF, the
set of data structures gets larger as does the SWF.

It is also my understanding that when you launch an AIR app, the SWF gets read fully into
memory.  When you launch a SWF in a browser, the SWF is streamed in over time and once a frame
full of SWF is loaded that frame starts executing.  I believe that AIR does not stream in
the SWF, it assumes it can just load the whole SWF into memory quickly.

Then, the AIR (or Flash) runtime runs through the entire set of data structures, but it does
not run class init code until the class is actually used.

IMO, the time to run through the entire set of data structures is fast so adding another 1000
classes shouldn't be significant, especially compared to separately opening an external file
to load even a fraction of those classes.

I don't have much experience with mobile devices and how fast they can load an additional
1MB into memory from application storage, but I'd imagine that would be fast as well since
there is no spinning media.

So, you'd have to run your own tests, but the effect on startup time of baking in 100 extra
swfs will depend on how many of those swfs would get loaded at startup, how big they are,
and how many classes they share.  You could even see an performance improvement if you normally
loaded many of those SWFs and they share a lot of classes.

There is a poorly documented way of baking each module SWF into a separate frame in the SWF.
 Flex SWFs are typically two-frame SWFs with a small first-frame preloader UI and the rest
of your app is packed into the second frame.  In the browser, the preloader shows until the
huge second frame is downloaded.  If that code then has to wait for other modules to be fetched
off the network, it can delay startup.  By baking modules into third and fourth frames in
a SWF, the app can supposedly get started while the modules are downloading in the same network
request.  The downside is that if you need the last module in the SWF, you have to wait for
all other frames/modules to finish downloading before you can use it.  I have no idea of that
would help in an AIR/Mobile scenario or not, but wanted to make sure you knew that was an
option.

And, of course, the downside of baking anything in is that you don't get the benefits of asynchronous
development and zero-install auto-updating.

> Compilation AIR application of IOS with modules
> -----------------------------------------------
>
>                 Key: FLEX-34859
>                 URL: https://issues.apache.org/jira/browse/FLEX-34859
>             Project: Apache Flex
>          Issue Type: Question
>          Components: Modules
>            Reporter: Pedro
>              Labels: air, compilation, flex, iOS, module
>
> Hi there, 
> In my company we have an AIR application for IOS (we use Flex 4.12 and AIR 13.0) , this
application needs to use modules at run time downloaded from a server, Apple does not allow
this feature so I've seen that I can compile at the same time my application with SWF’s
of each module by ADT command in a terminal.
> Lets remember that using Flex mobile we can generate applications for Android, IOS, Black
Berry and AIR. My question is whether, once compiled application and generated the IPA, the
performance of the application in IOS will be the same as if executed under a build Adobe
AIR? That is, although I compile my application with 100 SWF's, each of them not be loaded
until it is claimed by the main application as when you run the application with AIR, isn´t
it?
> Thanks.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message