OK
AJAX error!

Les forumsGrammalecteAstuce qui pourrait simplifier les "import" en JavaScript

Astuce qui pourrait simplifier les "import" en JavaScript

Bonjour,

Je vous mets deux articles qui je pense permettrait de simplifier un peu le code :
* medium.com…
* web.dev…

Ces articles expliquent comment utiliser comme module dans un web-Worker et dans un background pour les web-Extensions !

J'ai pas testé vu que je suis sur-booker en ce moment mais je pense que ça simplifiera le code et que ça ouvre à certaines perspectives ;)
le 21 août 2020 à 12:25
Bonjour,

Ce n’est pas une astuce, c’est en théorie la méthode normale, mais elle n’est pas disponible encore sur Firefox.
developer.mozilla.org…
le 21 août 2020 à 12:34
Ah, j'ai fait quelques tests c'est uniquement le worker en tant que module qui fonctionne pas sous Firefox sinon dans le background ça fonctionne sans problème...

Je me demande si le worker est vraiment nécessaire que que le background est déjà un processus séparer des pages ?
Est-ce que si le background plante ou demande beaucoup de temps a répondre ça ralentit la navigation ou fait planter le navigateur ?
Est_ce plus rapide dans un worker même si là je ne verrais pas de raison ?
le 21 août 2020 à 17:01
Oui, le worker est indispensable, sinon on fait figer tout Firefox quand il fait de l’analyse grammaticale.
Du moins, c’était comme ça quand je l’ai conçu. J’ignore si ça a changé entre-temps.

Autrefois, avant WebExtension, le code était dix ou vingt plus rapide dans un worker. Depuis WebExtension, je n’ai pas fait de test sur la question.

De toute façon, il faudrait idéalement que j’implémente un pool de workers.
le 21 août 2020 à 18:44
Merci pour la réponse !

C'est pénible les navigateurs vu qu'ils n’implémentent pas tous les mêmes choses... Et souvent on est obligé de trouver des rustines pour que ça fonctionne partout.

Effectivement un pool de workers aurait du sens...

Sinon, j'avais pensé (une idée folle) mais là c'est un boulot énorme serait de porter Grammalecte en RUST par exemple afin de pouvoir générer du web-assembly et ainsi l'utiliser dans la web-extension. Le grand mystère dans cette solution est : serait-ce vraiment plus rapide et rentable vu le travail que ça demanderait ?
le 21 août 2020 à 19:29
Ma curiosité a été trop grande ^^
Malgrès ma non connaissance du Rust j'ai commencer a porter graphspell en Rust !
Pour le moment j'ai juste implémenté la fonction lookup et morph donc voici un petit benchmark :

VERSION JS:
Vérification de: salut itération: 20000 -> true
Fonction #salut: 91.02880859375ms
Vérification de: gfb itération: 20000 -> false
Fonction #gfb: 118.239990234375ms
Vérification de: anticonstitutionnellement itération: 20000 -> true
Fonction #anticonstitutionnellement: 162.219970703125ms
---------------------------------------
Morph de: suis itération: 20000 -> (3) [">suivre/:V3_it_x__a:E:2s/*", ">suivre/:V3_it_x__a:Ip:1s:2s/*", ">être/:V0ei_____a:Ip:1s/*"]
Morph #suis: 168.51708984375ms
Morph de: salut itération: 20000 -> [">salut/:N:m:s/*"]
Morph #salut: 117.34814453125ms
Morph de: salutez itération: 20000 -> []
Morph #salutez: 92.685302734375ms

VERSION WEBASSEMEMBLY RUST :
Vérification de: salut itération: 20000 -> true
Fonction #salut: 46.60693359375ms
Vérification de: gfb itération: 20000 -> false
Fonction #gfb: 34.226806640625ms
Vérification de: anticonstitutionnellement itération: 20000 -> true
Fonction #anticonstitutionnellement: 147.400146484375ms
----------------------------------
Morph de: suis itération: 20000 -> (3) [">suivre/:V3_it_x__a:E:2s/*", ">suivre/:V3_it_x__a:Ip:1s:2s/*", ">être/:V0ei_____a:Ip:1s/*"]
Morph #suis: 270.510009765625ms
Morph de: salut itération: 20000 -> [">salut/:N:m:s/*"]
Morph #salut: 182.840087890625ms
Morph de: salutez itération: 20000 -> null
Morph #salutez: 45.49267578125ms

La fonction Morph est aussi lente a cause d'une de mes méconnaissances vu qu'actuellement a chaque appel il y a un encodage en json et un decodage (je ne sais pas encore passer un array of string de js <=> webassembly).

A voir mais on doit donc pouvoir avoir un net gain avec le webassembly ;) Si ça t'interesse je peux partager le code écrit (faut que j'organise mieux lol)
le 24 août 2020 à 17:21
Désolé, je pensais avoir déjà répondu au sujet de Rust (je suis sûr de l’avoir fait, mais j’ai dû passer à un autre onglet et fermer le navigateur avant d’avoir posté).

Il ne fait aucun doute que ce sera plus rapide que JavaScript. Néanmoins, est-ce bien utile ? À mes yeux, pas vraiment.
On ne souffre pas d’un problème de performance, sauf sur un point : la suggestion orthographique (mais mon algo demande à être retravaillé).

Bref, c’est un boulot énorme juste pour refaire ce qui fonctionne déjà.

Par ailleurs, pourquoi Rust ? Pourquoi pas plutôt AssemblyScript qui est une variante de TypeScript, ce sera certainement moins éloigné de JavaScript.
le 25 août 2020 à 08:36
J'avais pensé à Rust car en plus de pouvoir générer le webassembly le code pourrait être utilisé pour générer un exécutable (portable sur toutes les plateformes). Et qui de plus sans doute il y a déjà des librairies qui pourraient "simplifier" le travail.

Il y a la version cli en python mais pour un novice il faut d’abord installer python (la bonne version!!!) qui est plus compliqué que juste avoir un exécutable.

C'est sur c'est un travail énorme !!!

Le webassembly peut être utilisé dans python mais est-ce les extensions pour LibreOffice le webassembly peut fonctionner ? Si c'est le cas, il pourrait n'y avoir qu'une version en Rust pour le core et les interfaces interrogeront le core pour les différentes extensions. Le core ne serait donc plus que dans un seul langage !

A voir pour AssemblyScript ;) car ce qui est sûr c'est que si ça permet de faire un webassembly avec tout Grammalecte il n'y aurait plus le problème des différents imports ;)

PS : ce topic est à prendre comme une réflexion et non comme quelque chose à faire ;) d'ailleurs je suis toujours surpris qu'il n'y ait pas plus de contributeurs au développement :s
le 25 août 2020 à 15:43
Personnellement je lis ça avec intérêt mais comme je ne suis pas très doué en dev... Si c'est pour rajouter des bug (et donc du boulot pour l'admin) je préfère m'abstenir.
le 25 août 2020 à 19:08
Bonsoir,

Pour info, j'ai mis sur un serveur git perso le début du portage : git.gravier.pro…
Évidement les contribution sont les bienvenus ;)

Je découvre le RUST donc je met pas mal de temps...
le 01 septembre 2020 à 23:10

Notification par e-mail    1