{ "id": "173223", "key": "TIMOB-26917", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "20432", "name": "Release 8.0.1", "archived": false, "released": true, "releaseDate": "2019-05-15" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2019-03-27T16:49:50.000+0000", "created": "2019-03-21T19:34:14.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "build-time", "engSchedule", "ios" ], "versions": [ { "id": "19922", "description": "", "name": "Release 6.2.1", "archived": false, "released": true, "releaseDate": "2017-09-18" }, { "id": "19882", "name": "Release 8.0.0", "archived": false, "released": true, "releaseDate": "2019-03-14" }, { "id": "20238", "description": "", "name": "Release 7.5.0", "archived": false, "released": true, "releaseDate": "2018-11-15" } ], "issuelinks": [ { "id": "57272", "type": { "id": "10001", "name": "Cloners", "inward": "is cloned into", "outward": "is cloned from" }, "outwardIssue": { "id": "172906", "key": "TIMOB-26761", "fields": { "summary": "iOS: Checking every single file modification makes larger apps really slow", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "57609", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "173558", "key": "TIMOB-27043", "fields": { "summary": "Cache JS processing between builds", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } } ], "assignee": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "updated": "2019-04-30T08:53:02.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "Our CLI builds process JS files in series, and differ between platforms versus how they compare the contents to determine how to proceed.\r\n\r\nBoth platforms read in the source JS file and transpile it.\r\n\r\niOS 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.\r\n\r\nAndroid 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.\r\n\r\nThe 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...\r\n\r\nBut, moving to processing the JS files in parallel has significant performance gains on iOS in particular.", "attachment": [], "flagged": false, "summary": "iOS: App builds containing large amounts of JS files are extremely slow", "creator": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "subtasks": [], "reporter": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "comment": { "comments": [ { "id": "447064", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "I have manually merged this perf fix to master branch. I think it's a small enough change and has a significant improvement in timings, so should be considered for 8.0.1.", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2019-03-21T19:53:56.000+0000", "updated": "2019-03-21T19:53:56.000+0000" }, { "id": "447077", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "Merged to 8_0_X as well.", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2019-03-22T12:51:08.000+0000", "updated": "2019-03-22T12:51:08.000+0000" }, { "id": "447219", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified the fix with SDK 8.0.1.v20190327083138. Checked with KS v2.\r\nClosing.\r\n\r\nBuild timings:\r\n1. SDK 8.0.0.GA : \r\n* First build 33s\r\n* Rebuild : 9s\r\n\r\n2. SDK 8.0.1.v20190327083138 :\r\n* First build: 25s\r\n* Rebuild: 6s", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-03-27T16:47:27.000+0000", "updated": "2019-03-27T16:49:27.000+0000" } ], "maxResults": 3, "total": 3, "startAt": 0 } } }