ДЗ №6: Замер производительности #7
No reviewers
Labels
No labels
No milestone
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
fbki.Levitan/PersonalAccount!7
Loading…
Reference in a new issue
No description provided.
Delete branch "task/6_performance-evaluation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
732acb31f27ed7a7d5f3В целом хорошо. Решение местами упростили. Есть замечания с моей стороны. Нагрузочный тест - хороший. Спасибо.
@ -50,0 +73,4 @@var merged = new Dictionary<DateOnly, RevenueAccumulator>(capacity: 64);foreach (var localDict in threadLocalDicts.Values)1 Ну раз уж Вы используете ForEach для наполнения словаря, то корректней использовать потокобезопасный словарь
https://learn.microsoft.com/ru-ru/dotnet/api/system.collections.concurrent.concurrentdictionary-2?view=net-8.0
2 Вы далее используете проход двумя циклами. Лучше сделать ключ другой и сопоставлять по ключу. Это резко ускорит работы. Заменить два цикла - одним.
На занятии я показывал пример. Уточните у коллег.
@ -50,2 +79,3 @@{Period = g.Key,ref var m = ref CollectionsMarshal.GetValueRefOrAddDefault(merged, date, out _);m.CashAmount += local.CashAmount;Суммы не верно рассчитаны
см https://gitverse.ru/VolovikovAlexander/PersonalAccount2026/content/master/Src/PersonalAccount.Api/Logics/RevenueReportService.cs
При оплате наличными, нужно сумму сдачи исключить.
При любой оплате, нужно сумму скидки исключить.
@ -71,0 +110,4 @@switch (t.PaymentType){case PaymentType.Cash: acc.CashAmount -= t.Amount; break;case PaymentType.Bank: acc.BankAmount -= t.Amount; break;Возврат может быть только для оплаты наличными.
@ -65,0 +69,4 @@openShifts.Remove(employeeId);}}Не вижу реализаций следующих граничных условий:
Ok