Question

Nous avons beaucoup d'anciens scripts Perl hérités qui se connectent à un processus MS SQL DB certains enregistrements et créent des fichiers. Au fil du temps, la taille quotidienne des transactions a augmenté et ces scripts deviennent de plus en plus chers.

De plus, les bases de données ont augmenté avec de plus en plus de tables et la modification des anciens scripts Perl est lourde. Pensait à refaire certains des principaux scripts sous .NET (en C #)

Existe-t-il un avantage de vitesse sous un serveur Windows en utilisant l'un par rapport à l'un par rapport à l'autre?

Encore une fois l'idée est

  1. Exécuter l'ordre

  2. Processus Résultats grâce à une mise en forme de base

  3. Écrire des résultats dans un fichier

Était-ce utile?

La solution

Cela dépend de la stupidité des programmeurs respectifs. Lorsqu'ils ont été initialisés correctement, ils devraient tous les deux à l'aise de saturer la bande passante que vous leur lancez sur le système de disque - et il y a votre goulot d'étranglement. Faites de grandes écritures en cache (.NET BufferedStream) et faites que vous avez un SSD ou quelque chose de je suis prêt. Le goulot d'étranglement Perforamcne avec une programmation appropriée est le sous-système de disque pour ce type de travail.

Autres conseils

Les deux tâches peuvent être effectuées également rapidement dans l'une ou l'autre langue. Ils peuvent également tous les deux être horriblement mal et horriblement lentement dans les deux langues, donc il y a à considérer.

D'après un autre de vos commentaires, vous mentionnez que vous faites le format du côté du serveur SQL. Ces requêtes seraient potentiellement beaucoup moins chères si vous le faisiez du côté de l'application, puis déplacent ce script vers une machine plus rapide afin d'avoir le moins d'impact sur le serveur DB.

Je suppose que cette vitesse de disque dur est votre plus gros problème maintenant. Vous devez surveiller les ressources lors de l'exécution de ce script - est-ce que cela maximum votre processeur? Est-ce que c'est beaucoup lisant / écriture en mémoire? (Il ne devrait pas). Attend-il juste sur le disque des E / S la plupart du temps? Si c'est le cas, vous devez envisager de mettre à niveau votre stockage sur des disques plus rapides, un raid ou un SSD en fonction de ce qui a le plus de sens pour votre situation.

Même quelque chose comme défragir le disque pourrait aider.

Si vous avez un bon processeur / mémoire à épargner mais que vous ne pouvez pas éviter le disque lent, vous pouvez même chercher à compresser toute la sortie en mémoire avant de l'écrire (encore une fois, en supposant que c'est une bonne idée, cela dépend vraiment de l'endroit où ces rapports vont et quel format est nécessaire).

Je ne m'attends pas à de grandes différences entre ces langues lorsqu'il s'agit d'écrire des performances (généralement le goulot d'étranglement sera un disque dur, et non le traitement de la puissance du CPU). Vous devriez plutôt jeter un œil aux «coûts de maintien du code», en C #, vous pouvez obtenir du code beaucoup plus propre, sans parler que l'intégration avec MS SQL sera probablement plus efficace, sans parler que vous pouvez utiliser le filetage.

Meilleur code, plus maintenable, peut-être plus rapidement. Ouais c # est une bonne idée

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top