URL: https://linuxfr.org/users/iug/journaux/la-terre-est-plate-et-java-est-plus-rapide-que-c Title: La terre est plate et Java est plus rapide que C++ Authors: iug Date: 2005年04月15日T11:17:42+02:00 Tags: Score: 0 Bonjour, Je vous propose un petit troll du Vendredi, ainsi qu'un défi. J'utilise Java Sound pour enregistrer et jouer du son. J'avais, avec le JDK 1.3 des problèmes de pertes de synchro, i.e. Java arrivait pas à suivre la cadence. Les marketteux de chez Sun prétendant que Java Sound était maintenant en Direct Sound (pas celui de M,ドル celui de Java) depuis la 1.4, utilisant Alsa ou bien DirectX, marchait beaucoup mieux. Le problème c'est que Java, c'est peut-être plus rapide que C++, mais ça ne sait pas scheduler un thread correctement. En effet, ma carte son me donne un buffer d'enregistrement de 1s au max (avec Direct Sound on ne peut pas choisir la taille du buffer, et maintenant Sun ne donne plus accès au Java Audio Engine pour l'enregistrement). Du coup, il faut que mon thread d'enregistrement soit schédulé au moins une fois par seconde. Et ben cette merde de Scheduler qu'il y'a dans la JDK, il est pas capable de me faire ça. A peu près toutes les 30s, mon thread n'est pas schédulé à temps. Pourtant je lui demande un scheduling toutes les 100ms via un wait(100) dans mon thread. Et ce, sans que rien ne tourne en tâche de fond, sauf les processus de mon OS et les quelques threads "system" de la JVM. Sur un Pentium IV 2.4GHz avec 1 Go de RAM, 0% d'utilisation CPU, le scheduler de la JVM n'est pas foutu de faire en sorte que mon thread soit schedulé avant 1s. Du coup, le son en Java on peut oublier :) Je vais coder un bout de C++ pour gérer ça et passer par JNI. Conclusion la terre est plate (c.f. la page performance sur jsresources.org).

AltStyle によって変換されたページ (->オリジナル) /