Голямата практична задача от работилницата
Здравейте. Днес цял ден се бъхтих и написах от нулата някакво решение, използващо обекти. До колко работи правилно не знам, но на принтване го докарвам. Стойностите ми са подозрително близки, но всъшност това може би е нормално за големи статистики? Знам ли. Освен това не знам дали е нормално на програмата ми да й отнема околко 3 минути ( Intel i5-3210M, dual core ) да прекара файла с 1млн продажби. Ето и резултатите, които получавам:
Обобщение
---------
Общ брой продажби: 1000000
Обща сума продажби: 316698926.08
Средна цена на продажба: 316.69892608
Начало на период на данни: 2015-12-01 08:00:00+02:00
Край на период на данни: 2016-01-24 20:59:56+00:00
Сума на продажби по категории (top 5)
-----------------------------
JACKETS, SURFING :****************************** 3010983.13 $
T-SHIRTS, WORKOUT :***************************** 3004242.26 $
SHOES, GOLF :***************************** 3001690.56 $
SHOES, WRESTLING :***************************** 3000527.93 $
SHOES, BOXING :***************************** 2998642.42 $
Сума на продажби по градове (top 5)
---------------------------
Manchester :****************************** 8697704.85 $
Liverpool :***************************** 8690208.43 $
Leeds :***************************** 8669855.04 $
Nottingham :***************************** 8650692.99 $
Edinburgh :***************************** 8556538.61 $
Часове с най-голяма сума продажби (top 5)
---------------------------------
2015-12-01 17:00:00+00:00 :****************************** 495425.73 $
2016-01-02 11:00:00+00:00 :***************************** 486492.2 $
2016-01-04 18:00:00+00:00 :***************************** 486254.26 $
2016-01-07 10:00:00+00:00 :***************************** 480126.26 $
2015-12-22 13:00:00+00:00 :***************************** 479260.66 $
С времето така и не успях да махна секундите и часовата зона. Опитах с отелни условия и разни cast-вания, но чесно казано вече съм изпушил и изобщо не ми се занивама. Драгите потребители ще си гледат часовата зона :D
Edit: Поиграх си още 20 минути и си копирах кода от програмата в друга версия, този път - един файл, използващ само функции. По този начин намалих времето за което програмата работи на приблизително 1мин:10сек - 1мин:20сек. Явно обектите ми не струват, тъй като използвам много цикли ( общо пет пъти минавам през целия файл ) и следователно на процесорчето му отнема време. При функциите използвам само един цикъл и записвам всички данни едновременно.
Просто малко интересна информация ( може би! )
Интересно ми е как са се представили други хора, така че пишете с резултати и тестове. Особено ми е интересно ако някой е завършил програмата, която Борис пише в лекциите. Дали може програма с обекти да се справи по-бързо от моята с функции.
Това е интересен подход, със сигурност е доста по-чисто от това, което аз съм направил. Макар, че ако правилно съм те разбрал запазваш данните от всеки анализ в отделен лист. Което означава, че накрая на задачата, когато опре да ги обработваш - пак трябва да итерираш доста листове, което също ще отнеме време. Поне така ми се струва, може и да бъркам. Ще ми бъде интересно да я прегледам като я довършиш ( можеш да ме улесниш с някой друг #коментар :Д)
Не пазя всеки анализ в отделен списък, а в отделен обект. В смисъл всеки анализатор си знае какво трябва да прави и съответно си пази каквото му трябва, като още при итерацията на продажбите си подрежда данните: ето това е частта от клиента, която ще ти помогне да ме разбереш, че сега не мога да отделя много време да кача кода
Ето го и решението ми, както обещах по-горе. При мен най-големия файл минава за 50 сек.
Между другото, achobanov, сравних моите резултати с твоите и има разлика при сортирането по категории. Ти сортираш по подкатегории, а аз по категории.