web-dev-qa-db-fra.com

Eclipse n'utilise pas dual core sur Ubuntu 9.10

J'utilise Eclipse sur Ubuntu 10.10 32 bits, lorsque je compile un énorme projet Android, il devient de plus en plus lent, j'ai 4 Go de RAM (qui n'est utilisé qu'à 25%) bien que cela devienne de plus en plus lent lorsque j'ai observé Eclipse plus loin. utilise un seul processeur et crée une charge de 100% sur celui-ci alors que les autres processeurs ont une charge de seulement 20%, ce problème est-il Eclipse ou Ubuntu?

2
Sandeep Manne

Eclipse et le kit de développement Java utilisé par Eclipse n'ont à peu près rien à voir avec votre développement, mais avec le développement d'une application Android à l'aide du SDK standard.

Pour clarifier ce point, vous pouvez considérer 3 faits importants:

  • vous pouvez créer une application Android complète à partir de la source sans utiliser Eclipse
  • Eclipse n’est qu’un IDE pour le Android SDK, un groupe d’éléments graphiques pouvant accélérer votre flux de travail, ni plus ni moins.
  • Eclipse utilise un environnement JDK alors que le Android SDK ne l'utilise pas (le A. SDK n'utilise rien d'autre que le SDK lui-même). Il utilise simplement différents environnements pour exécuter et créer des applications. Il est donc trompeur de dire: "Eclipse n'utilise pas le double cœur lors de la compilation d'un énorme projet Android"

Je pense qu’à ce stade, le fait que votre application est en fait compilée par le SDK lui-même devrait être clair, et ce que vous soulignez comme une mauvaise chose est généralement considéré comme une bonne chose.

Application multithread et, en général, application (avec "application", je veux dire le SDK et non votre application) qui prend en charge leur exécution fractionnée en plusieurs tâches, pose un gros problème sur la table: une phase de débogage efficace et efficace. Disons que vous compilez quelque chose qui se scinde en 4 threads, dans le crash de votre compilateur X, la question qui se pose est la suivante: lequel des 4 est le méchant? tous? seulement 1? 2? 3?

Considérant qu’une utilisation typique du Android SDK n’est pas basée sur une conception multithread (avec cela, je veux dire qu'un développeur peut attendre 1 ou 2 minutes dans le pire des cas, rien ne change et le débogage L’environnement multithread avec quelques accès simultanés est beaucoup plus complexe et peut prendre des semaines sans obtenir de résultats), l’adoption d’une conception multithread peut facilement offrir plus d’avantages que d’avantages, en particulier pendant la phase de compilation et de débogage.

En fin de compte, en considérant le public de développeurs, la cible d’Android, qu’est une application Android, ce type de logiciel est probablement le plus approprié et le plus efficace, et je ne considérerai pas le manque threading compiler une mauvaise chose.

3
Micro

Tiré de page wiki d'Eclipse .

CPU multi-core

En raison de contraintes de puissance, il y a une tendance à utiliser plusieurs cœurs sur un processeur au lieu d'augmenter simplement la fréquence du processeur. Eclipse pourrait permettre aux développeurs d'écrire des programmes multithreads pour tirer parti de la multiplication des cœurs. De plus, Eclipse lui-même pourrait être optimisé autant que possible pour fonctionner sur plusieurs cœurs.

Eclipse lui-même n’a pas de support multi-thread, ce qui signifie que peu importe le nombre de CPU/cœurs de processeur dont vous disposez, Eclipse ne fonctionnera que dans l’un de vos cœurs.

De plus, la capacité d’un compilateur à utiliser plusieurs processeurs/cœurs de processeur dépend du langage que vous utilisez pour développer votre projet Android.

Certains compilateurs pourront utiliser plusieurs processeurs/cœurs de processeur lors de la compilation, même si le IDE que vous utilisez ne tire pas parti de ceux-ci.

Le noyau Linux prend en charge plusieurs processeurs/cœurs dans un système depuis la version 2.0 du noyau, ce qui permet à vos programmes de tirer parti de cela, mais le programme lui-même doit prendre en charge plusieurs processeurs/cœurs.

Pour plus d'informations sur le fonctionnement du multitraitement Symetric, veuillez trouver ici .

En bref: Ubuntu prend en charge SMP car la version actuelle du noyau est <2.0 (également sur 9.10, comme vous le savez) mais Eclipse n'a pas l'habitude d'utiliser plusieurs processeurs/cœurs. De plus, même si Eclipse l’avait eu, cela dépendrait (pendant la construction du projet) du langage et du compilateur que vous utilisez pour votre projet.

Ceci est vrai quel que soit le compilateur que vous utilisez, y compris ceux du SDK Android.

3
Bruno Pereira

En supposant que vous utilisez make en tant que constructeur de projet et que vos dépendances sont écrites correctement, le mieux est probablement de faire appel à make en parallèle. Je pense Eclipse a une case à cocher pour cela, mais si ce n'est pas simplement ajouter -j2 aux paramètres du générateur (où '2' est le nombre de tâches à exécuter simultanément - expérimentez et voyez ce qui se passe le meilleur pour toi).

0
ams