Uploaded image for project: 'Titanium SDK/CLI'
  1. Titanium SDK/CLI
  2. TIMOB-26917

iOS: App builds containing large amounts of JS files are extremely slow

    Details

    • Type: Bug
    • Status: Closed
    • Priority: High
    • Resolution: Fixed
    • Affects Version/s: Release 6.2.1, Release 8.0.0, Release 7.5.0
    • Fix Version/s: Release 8.0.1
    • Component/s: iOS

      Description

      Our CLI builds process JS files in series, and differ between platforms versus how they compare the contents to determine how to proceed.

      Both platforms read in the source JS file and transpile it.

      iOS then does a check for the destination path to see if it exists, and if so to read that in and compare versus the transpiled contents. If they differ, it writes it out.

      Android checks the original source against the transpired. If they don't differ and we're on MacOS/Linux we symlink the original src file. Otherwise, we write the new contents out.

      The Android approach appears to be significantly faster, though it's unclear if either approach is "correct". Ideally we'd do a little of both - symlink when transpilation does not affect the source, don't write to destination file if we'd just be writing the same contents, etc. Fixing all of that logic properly is. larger task...

      But, moving to processing the JS files in parallel has significant performance gains on iOS in particular.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                cwilliams Christopher Williams
                Reporter:
                hknoechel Hans Knöchel
              • Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Backbone Issue Sync

                  • Titanium SDK/CLI <> Titanium Mobile
                    Synced with:
                    TIMOB-21108
                    Sync status:
                    PENDING
                    Last received:
                    Last sent:

                    Git Integration