Salut à tous,
Je ne suis pas développeur, j'ai juste un peu pratiqué le vb .net à l'époque (ainsi que ses prédécesseurs) et je suis en train de découvrir WPF à l'occasion d'un petit projet perso. Ce projet consiste à faire des opérations assez nombreuses sur des textes assez long (entre 10 000 et 300 000 mots). J'ai commencé par faire une macro word qui remplissait un fichier excel, mais j'aimerai ajouter des fonctions, récupérer une jolie interface et faire un portage "optimisé" sous WPF.
Pour vous donner une idée, voilà les types d'algo que j'écris:
- Comptage du nombre de mots
- Indexation de chaque mot unique, avec le nombre d’occurrences de chacun
- Écarts min/max et moyens entre chaque mot identique (si plus de 6 occurrences)
- Calcul des longueurs moyennes de phrases et écarts-types
- Calcul des longueurs moyennes de paragraphes et écarts-types
- pour chaque mot unique, requêtes en lecture sur BDD *.mdb pour voir si le mot est en base. Pas eu moyen d'utiliser une BDD accdb (access 2013) à cause d'un problème de driver ACE
Vu la taille du texte manipulé (entre 10 000 et 300 000 mots), je veux utiliser la meilleure approche en termes de performances. Voilà donc les questions:
- Je veux instancier une classe "parseur" et une classe "analyseur" dans deux threads séparés. J'ai vu que WPF fourni la possibilité de faire des tâches asynchrones dans le thread d'interface, mais vu la charge, je crois que le multi thread est une meilleure option. Est-ce que vous confirmez?
- Dans chacun de mes objets "parseur" et "analyseur" je veux pouvoir récupérer l'avancement des traitements sur le thread d'interface. En WPF, je suis supposé utiliser un dispatcher? Vous avez des bons exemples (simples) à me conseiller pour récupérer un feedback venant d'un thread séparé? Est-ce qu'un background worker peut faire l'affaire?
- Pour le comptage des mots et les tâches qui suivront, je ne sais pas quelle est la meilleur méthode, toujours au niveau des performances.
Voilà les options que j'ai identifié pour l'acquisition du texte:
> Partir d'un string.split et remplir un tableau de string
> un dataset
> Une structure
> utiliser un regex
> le composant stringbuilder peut-il servir dans ce cas là?
Pour la manipulation du texte (comptage, position et écarts des mots)
> Ecrire dans une table de ma base mdb après comptage (donc travailler directement à partir du string [] , dataset, structure ou regex selon la solution adoptée)
> Ecrire dans une table de ma base mdb avant comptage (donc faire le travail sur la BDD, chaque mot ayant une ligne dans une table).
> Travailler directement à partir du string [] , dataset, structure ou regex selon la solution adoptée sans utiliser de base de données.
Pour la comparaison avec ma table de référence, faut-il que je compare via mon soft ou que je passe directement les requêtes à la base access? Je précise que après chaque Matching, je dois faire un update dans ma table si j'ai choisi d'ecrire mon texte dans une autre table de ma base
Enfin, à terme, je souhaite utiliser un type de base de données léger (comprendre "qui se déploie facilement") mais qui a de bonnes performances. Est-ce que j'y gagnerais à utiliser SQLite3? Pour le format de base accdb, je galère à cause d'une erreur apparemment classique ("le fournisseur 'Microsoft.ACE.OLEDB.12.0' n'est pas inscrit sur l'ordi local"). J'ai eu beau placer la plateforme cible par 32bits only et instaler le moteur de BDD access x64, ça n'a rien résolu. Si quelqu'un peut aider au passage, il est bienvenu :-)
Voilà, pas mal de questions. Je prends toutes vos suggestions, réponses partielles ou avis personnels.
Par avance, merci!
Partager