clue / phar-composer

Simple phar creation for every PHP project managed via Composer
https://clue.engineering/2019/introducing-phar-composer
MIT License
859 stars 78 forks source link

Slow performance #44

Closed cursedcoder closed 9 years ago

cursedcoder commented 10 years ago

I have this

build /.
...
OK - Creating project.phar (46010.5 KiB) completed after 8686.3s

Regarding source files I have 15~ dependencies such as symfony or doctrine. What could I do to fix this for at least few minutes?

hakre commented 9 years ago

Sound like what you ask for could been hinted within the part you freely excluded form your report and replaced with "...". So from the little information you've been given: Have you tried again? Is it still that slow with the exact numbers? How does it behave on a faster computer? How does it behave if you do it two times in a row?

clue commented 9 years ago

8686.3s

Wow, huge numbers :) I'm regularly using this project to bundle all kinds of tools and rarely see this over 20s.

This certainly depends on the kind of repository you're bundling and/or your hardware and bandwidth, so this is a bit hard to trace without more details.

Can you provide some more background or has this been resolved in the meantime?

Also, we have a few PRs pending that also affect performance (#27, #37, #38), so we should expect this to only get faster in the future :+1:

bobbyshaw commented 9 years ago

Hopefully a new release with some of the PRs will help speed. On my MacBook Pro (Retina, 15-inch, Late 2013), I have the following build process which takes around the same amount of time even when re-run:

[1/1] Creating phar magedbm.phar
  - Remove existing file magedbm.phar (31964 KiB)
  - Adding main package
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/"
  - Adding composer base files
  - Adding dependency "symfony/process" from "vendor/symfony/process/Symfony/Component/Process/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/symfony/process/Symfony/Component/Process/"
  - Adding dependency "symfony/finder" from "vendor/symfony/finder/Symfony/Component/Finder/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/symfony/finder/Symfony/Component/Finder/"
  - Adding dependency "symfony/filesystem" from "vendor/symfony/filesystem/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/symfony/filesystem/"
  - Adding dependency "symfony/console" from "vendor/symfony/console/Symfony/Component/Console/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/symfony/console/Symfony/Component/Console/"
  - Adding dependency "seld/phar-utils" from "vendor/seld/phar-utils/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/seld/phar-utils/"
  - Adding dependency "seld/jsonlint" from "vendor/seld/jsonlint/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/seld/jsonlint/"
  - Adding dependency "seld/cli-prompt" from "vendor/seld/cli-prompt/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/seld/cli-prompt/"
  - Adding dependency "justinrainbow/json-schema" from "vendor/justinrainbow/json-schema/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/justinrainbow/json-schema/"
  - Adding dependency "composer/spdx-licenses" from "vendor/composer/spdx-licenses/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/composer/spdx-licenses/"
  - Adding dependency "composer/composer" from "vendor/composer/composer/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/composer/composer/"
  - Adding dependency "jakub-onderka/php-console-color" from "vendor/jakub-onderka/php-console-color/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/jakub-onderka/php-console-color/"
  - Adding dependency "symfony/yaml" from "vendor/symfony/yaml/Symfony/Component/Yaml/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/symfony/yaml/Symfony/Component/Yaml/"
  - Adding dependency "symfony/validator" from "vendor/symfony/validator/Symfony/Component/Validator/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/symfony/validator/Symfony/Component/Validator/"
  - Adding dependency "symfony/event-dispatcher" from "vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/"
  - Adding dependency "symfony/var-dumper" from "vendor/symfony/var-dumper/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/symfony/var-dumper/"
  - Adding dependency "nikic/php-parser" from "vendor/nikic/php-parser/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/nikic/php-parser/"
  - Adding dependency "jakub-onderka/php-console-highlighter" from "vendor/jakub-onderka/php-console-highlighter/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/jakub-onderka/php-console-highlighter/"
  - Adding dependency "dnoegel/php-xdg-base-dir" from "vendor/dnoegel/php-xdg-base-dir/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/dnoegel/php-xdg-base-dir/"
  - Adding dependency "psy/psysh" from "vendor/psy/psysh/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/psy/psysh/"
  - Adding dependency "n98/junit-xml" from "vendor/n98/junit-xml/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/n98/junit-xml/"
  - Adding dependency "fzaninotto/faker" from "vendor/fzaninotto/faker/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/fzaninotto/faker/"
  - Adding dependency "n98/magerun" from "vendor/n98/magerun/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/n98/magerun/"
  - Adding dependency "piwik/ini" from "vendor/piwik/ini/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/piwik/ini/"
  - Adding dependency "guzzle/guzzle" from "vendor/guzzle/guzzle/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/guzzle/guzzle/"
  - Adding dependency "aws/aws-sdk-php" from "vendor/aws/aws-sdk-php/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/aws/aws-sdk-php/"
  - Adding dependency "ifsnop/mysqldump-php" from "vendor/ifsnop/mysqldump-php/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/ifsnop/mysqldump-php/"
  - Adding dependency "symfony/translation" from "vendor/symfony/translation/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/symfony/translation/"
  - Adding dependency "twig/twig" from "vendor/twig/twig/"
    Adding whole project directory "/Users/tomrobertshaw/Code/magedbm/vendor/twig/twig/"
  - Setting main/stub
    Using referenced chmod 0644
    Applying chmod 0644

    OK - Creating magedbm.phar (31965.2 KiB) completed after 1623.1s

I'm not sure if that's expected or not as I do have quite a few packages included but would be great if there was a way to make it faster.

Let me know if there's anything I can do to help.

clue commented 9 years ago

FYI: #38 has been merged and reduced the build time by about 50%.

bobbyshaw commented 8 years ago

Thanks for the new release @clue! Confirmed my latest build went from 1623.1s to 686.1s.

clue commented 3 years ago

Resolved via #90