2

Cela peut sembler une question générique, mais quelle est la raison très technique pour laquelle javac ne compile pas en même temps? J'ai lu que le compilateur Eclipse est parallèle, alors pourquoi pas javac?Pourquoi Javac ne fonctionne pas sur des cœurs multiples?

+1

La raison "très technique" est que Sun/Oracle n'a pas conçu/implémenté le compilateur 'javac' de cette façon. J'imagine qu'ils ont des choses plus importantes à faire ... en termes de livraison de produits qui rapporteront de l'argent pour Oracle. –

+0

Qu'en est-il de open jdk alors? – Snicolas

+0

Qu'en est-il? Le même raisonnement s'applique ici. En réalité, OpenJDK est 99.x% la même base de code que la version JDK badgée par Oracle ... et développée par la même équipe. –

Répondre

-2

Je pense qu'il fait javac programme simple, si c'est parallèle interne, alors de nombreuses conditions de course doit être traitée, ce qui complique la chose. Pour utiliser multi-core, vous pouvez créer plusieurs processus javac pour atteindre le même objectif, semble que makefile et gcc fonctionne de cette façon.

« Keep it simple et stupide »

1

Il est très rare que les compilateurs de travailler effectivement en parallèle et je ne peux pas trouver des sources qui disent que le compilateur Java Eclipse est une exception. Ce que Eclipse a la capacité de faire, c'est de compiler plusieurs fichiers en parallèle en même temps. Ceci est sans rapport avec le fait qu'Eclipse possède son propre compilateur Java. S'il utilisait javac, il pourrait simplement exécuter plusieurs instances de javac en parallèle - il n'y a pas de problème avec ça. Et en fait, c'est exactement ce que font les outils de construction tels que maven lorsque vous exécutez une construction avec plusieurs threads.

+0

Voulez-vous dire compiler en parallèle dans différents modules? Gradle fait cela aussi, mais ici je parle vraiment de compiler 1 module en parallèle. – Snicolas

+0

@Snicolas J'ai voulu compiler différents fichiers en parallèle. Il est parfaitement possible de compiler des fichiers différents du même module en parallèle (ou de le faire dans les versions Java qui n'ont pas de modules). Ce qui n'est pas possible est de compiler un seul fichier en parallèle. – sepp2k