{"action":"created","issue":{"url":"https://api.github.com/repos/bmx-ng/bmk/issues/8","labels_url":"https://api.github.com/repos/bmx-ng/bmk/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/bmx-ng/bmk/issues/8/comments","events_url":"https://api.github.com/repos/bmx-ng/bmk/issues/8/events","html_url":"https://github.com/bmx-ng/bmk/issues/8","id":86094608,"number":8,"title":"\"compilation\" times longer because of file lookups","user":{"login":"GWRon","id":2625226,"avatar_url":"https://avatars.githubusercontent.com/u/2625226?v=3","gravatar_id":"","url":"https://api.github.com/users/GWRon","html_url":"https://github.com/GWRon","followers_url":"https://api.github.com/users/GWRon/followers","following_url":"https://api.github.com/users/GWRon/following{/other_user}","gists_url":"https://api.github.com/users/GWRon/gists{/gist_id}","starred_url":"https://api.github.com/users/GWRon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GWRon/subscriptions","organizations_url":"https://api.github.com/users/GWRon/orgs","repos_url":"https://api.github.com/users/GWRon/repos","events_url":"https://api.github.com/users/GWRon/events{/privacy}","received_events_url":"https://api.github.com/users/GWRon/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/bmx-ng/bmk/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2015-06-08T09:10:32Z","updated_at":"2015-07-03T18:30:18Z","closed_at":null,"body":"Not directly a bug or so ... but a notice.\n\nOn each compilation process BMK is comparing filetimes of all included and imported source files.\n\nThe more your project imports/includes (module and source file wise) the longer it takes.\n\nI cannot come up with a general solution to this problem. I understand that the problem arises from the feature of dynamic compilation of requested modules.\n\nOne suggestion is to create an additional file in .bmx containing the last saved filename (not needed) and having a filetime of that modified file.\nThis would need a modified MaxIDE (file creation on \"save\"). It also would lead to problems when using other (text) editors.\n\nSo a better option would be to have a list of files per directory and let the system (OS) return the newest/latest touched file (timestamp).\nProblem here is: I am not sure whether such a system call exists. Spawning processes (\"ls\") is creating to much overhead.\nIf there was an command ignoring provided filelists we would have to check if the newest is contained in our sources list...and if not, fall back to current approach.\n\n\nFor modules there is a potential solution: fileMtime of directories should change on creation of new files (directory index changes). So as we know that modules' .bmx-directory is only used by that module (compared to .bmx of a directory containing multiple projectXYZ.bmx) we could use that for our advantage.\nWhen compiling a module a special file is unlinked (if existing) and regenerated...this should then trigger an index change (might need a clearstats call inbetween).\nIf that is not the case then we need up to two files (comptime1 and comptime2). Each compilation removes the one file and creates the other one... \n\nWhat does this do? It moves the filetime checks from per-project-compilation to a per-module-compilation. Projects are surely leas often compiled than projects.\n\n\nAny other ideas?\n"},"comment":{"url":"https://api.github.com/repos/bmx-ng/bmk/issues/comments/118405596","html_url":"https://github.com/bmx-ng/bmk/issues/8#issuecomment-118405596","issue_url":"https://api.github.com/repos/bmx-ng/bmk/issues/8","id":118405596,"user":{"login":"woollybah","id":95883,"avatar_url":"https://avatars.githubusercontent.com/u/95883?v=3","gravatar_id":"","url":"https://api.github.com/users/woollybah","html_url":"https://github.com/woollybah","followers_url":"https://api.github.com/users/woollybah/followers","following_url":"https://api.github.com/users/woollybah/following{/other_user}","gists_url":"https://api.github.com/users/woollybah/gists{/gist_id}","starred_url":"https://api.github.com/users/woollybah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/woollybah/subscriptions","organizations_url":"https://api.github.com/users/woollybah/orgs","repos_url":"https://api.github.com/users/woollybah/repos","events_url":"https://api.github.com/users/woollybah/events{/privacy}","received_events_url":"https://api.github.com/users/woollybah/received_events","type":"User","site_admin":false},"created_at":"2015-07-03T18:30:18Z","updated_at":"2015-07-03T18:30:18Z","body":"I've added new build flag for apps : -quick\r\nThis will only look at .i and .a files for modules, and only build that module if either is missing, otherwise, it assumes the .i and .a are the latest and will use those."}}