Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 33025|Απάντηση: 2

[Επικοινωνία] Το .NET/C# χρησιμοποιεί το BenchmarkDotNet για να ελέγξει την απόδοση του κώδικα

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 3/3/2021 3:51:12 μ.μ. | | | |
απαιτήσεις: Στη διαδικασία ανάπτυξης, οι ίδιες δύο μέθοδοι λειτουργίας μπορούν να ικανοποιήσουν τις απαιτήσεις μας, αλλά για λόγους απόδοσης, θα επιλέξουμε την καλύτερη μέθοδο απόδοσης για κλήση, πώς να ελέγξουμε την απόδοση του κώδικα;

Η συγκριτική αξιολόγηση απόδοσης μπορεί να βοηθήσει τους προγραμματιστές να συγκρίνουν την απόδοση δύο αποσπασμάτων κώδικα ή μεθόδων, οι οποίες μπορούν να παρέχουν ένα καλό πρότυπο ποσοτικοποίησης για την επανεγγραφή ή την ανακατασκευή κώδικα. Χωρίς σημεία αναφοράς απόδοσης, είναι δύσκολο να φανταστεί κανείς πώς μπορείτε να διακρίνετε τη διαφορά στην απόδοση με γυμνό μάτι όταν αλλάζετε τη μέθοδο Α στη μέθοδο Β.

Το BenchmarkDotNet είναι μια ισχυρή βιβλιοθήκη συγκριτικής αξιολόγησης απόδοσης .Net στον επίσημο ιστότοποΗ σύνδεση με υπερσύνδεσμο είναι ορατή.

Αρχικά, θα δημιουργήσουμε ένα νέο έργο κονσόλας .NET Core 3.1. Το όνομα του έργου είναι: BenchmarkTest

Εγκαταστήστε το BenchmarkDotNet χρησιμοποιώντας την εντολή nuget, ο κώδικας έχει ως εξής:


Κάντε διπλό-κλικ στη μελέτη για να τροποποιήσετε την πλατφόρμα προορισμού της μελέτης, ως εξής:


Δοκιμάζουμε την απόδοση των μεθόδων TestMD5 και TestSHA1 στα πλαίσια .NET Framework 4.7.2 και .NET Core 3.1, αντίστοιχα.

Ο κωδικός έχει ως εξής:


Προσπαθήστε να το εκτελέσετε με το ακόλουθο σφάλμα:

Επικύρωση σημείων αναφοράς:
Το Assembly BenchmarkTest που ορίζει τα σημεία αναφοράς δεν είναι βελτιστοποιημένο
Το Benchmark δημιουργήθηκε χωρίς ενεργοποιημένη τη βελτιστοποίηση (πιθανότατα μια διαμόρφωση DEBUG). Παρακαλώ, δημιουργήστε το στο RELEASE.
Εάν θέλετε να διορθώσετε τα σημεία αναφοράς, ανατρέξτε στην ενότηταΗ σύνδεση με υπερσύνδεσμο είναι ορατή.

Αλλάξτε το έργο σε λειτουργία RELEASEγια να ξεκινήσετε ξανά το έργο, όπως φαίνεται παρακάτω:


* Περίληψη *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/Νοέμβριος 2018Ενημέρωση/19H2)
Intel Core i5-8259U CPU 2.30GHz (Coffee Lake), 1 CPU, 8 λογικοί και 4 φυσικοί πυρήνες
.NET Core SDK=5.0.103
  [Κεντρικός υπολογιστής] : .NET Core 3.1.12 (CoreCLR 4.700.21.6504, CoreFX 4.700.21.6905), X64 RyuJIT
  .NET 4.7.2 : .NET Framework 4.8 (4.8.4300.0), X64 RyuJIT
  .NET Core 3.1 : .NET Core 3.1.12 (CoreCLR 4.700.21.6504, CoreFX 4.700.21.6905), X64 RyuJIT


|   Μέθοδος |           Εργασία |       Χρόνος εκτέλεσης |     Μέσος όρος |     Σφάλμα |    StdDev |      Λεπτά |      Μέγιστο |   Διάμεσος |
|--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:|
|  ΔοκιμήMD5 |    .NET 4.7.2 |    .NET 4.7.2 | 4.119 ΗΠΑ | 0,0804 ΗΠΑ | 0,1045 ΗΠΑ | 3.958 ΗΠΑ | 4.318 ΗΠΑ | 4.123 ΗΠΑ |
| Δοκιμή SHA1 |    .NET 4.7.2 |    .NET 4.7.2 | 4.043 ΗΠΑ | 0,0793 ΗΠΑ | 0,1085 ΗΠΑ | 3.926 ΗΠΑ | 4.289 ΗΠΑ | 4.003 ΗΠΑ |
|  TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 ΗΠΑ | 0,0122 ΗΠΑ | 0,0114 ΗΠΑ | 1.202 ΗΠΑ | 1.238 ΗΠΑ | 1.214 ΗΠΑ |
| TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 ΗΠΑ | 0,0186 ΗΠΑ | 0,0165 ΗΠΑ | 1.284 ΗΠΑ | 1.336 ΗΠΑ | 1.307 ΗΠΑ |

* Συμβουλές *
Ακραίες τιμές
  TestContext.TestSHA1: .NET 4.7.2 -> 1 ακραία τιμή αφαιρέθηκε (5.52 us)
  TestContext.TestSHA1: Καταργήθηκε η ακραία τιμή .NET Core 3.1 -> 1 (1,37 ΗΠΑ)

* Θρύλοι *
  Μέσος όρος : Αριθμητικός μέσος όρος όλων των μετρήσεων
  Σφάλμα: Το ήμισυ του διαστήματος εμπιστοσύνης 99,9%
  StdDev : Τυπική απόκλιση όλων των μετρήσεων
  Ελάχιστο : Ελάχιστο
  Μέγιστο : Μέγιστο
  Διάμεσος : Τιμή που διαχωρίζει το υψηλότερο ήμισυ όλων των μετρήσεων (50ό εκατοστημόριο)
  1 us : 1 μικροδευτερόλεπτο (0,000001 δευτ.)

***** BenchmarkRunner: Τέλος *****
** Παρέμειναν 0 σημεία αναφοράς για εκτέλεση **
Διάρκεια: 00:01:14 (74 δευτ.), εκτελεσμένα σημεία αναφοράς: 4

Συνολικός χρόνος παγκοσμίως: 00:01:20 (80.63 sec), εκτελεσμένα σημεία αναφοράς: 4
* Καθαρισμός αντικειμένων *
Μόλις εκτελεστούν, τα αποτελέσματα των δοκιμών αποθηκεύονται στο φάκελο του έργου μας \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results, σε csv, html, md και άλλες μορφές.



Σημείωση:Η επιλογή πλαισίου προορισμού του SimpleJob είναι λανθασμένη και ενδέχεται να μην εκτελεστεί σωστάΩς εξής:

Απέτυχε η παράλληλη κατασκευή, μετάβαση σε διαδοχική κατασκευή


Πόροι:Η σύνδεση με υπερσύνδεσμο είναι ορατή.




Προηγούμενος:Πέρα από τη σύγκριση της λύσης με το σφάλμα "Αυτό το κλειδί εξουσιοδότησης έχει ανακληθεί"
Επόμενος:Οι κλήσεις Java στον διακομιστή υπηρεσιών web C# αποτυγχάνουν να αναγνωρίσουν την τιμή της κεφαλίδας HTTP SOAPAction
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 31/3/2022 3:56:47 μ.μ. |
1. Μέση μετάφραση: μέσος όρος, συνήθως αναφέρεται στον αριθμητικό μέσο όρο ή γεωμετρικό μέσο όρο.

Αφήγηση: Προσθέστε όλες τις τιμές σε ένα σύνολο ακολουθιών και διαιρέστε με τον συνολικό αριθμό, που είναι ο μέσος όρος.

2. Διάμεση μετάφραση: ενδιάμεση τιμή.

Αφήγηση: Τακτοποιήστε ένα σύνολο ακολουθιών με αύξουσα σειρά και, στη συνέχεια, πάρτε τη μεσαία τιμή, η οποία είναι η μεσαία τιμή.
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 25/5/2023 8:13:33 μ.μ. |
Το .NET/C# χρησιμοποιεί το Span για να χειριστεί συμβολοσειρές με υψηλή απόδοση
https://www.itsvse.com/thread-10596-1-1.html
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com