Голямата практична задача от работилницата
Здравейте. Днес цял ден се бъхтих и написах от нулата някакво решение, използващо обекти. До колко работи правилно не знам, но на принтване го докарвам. Стойностите ми са подозрително близки, но всъшност това може би е нормално за големи статистики? Знам ли. Освен това не знам дали е нормално на програмата ми да й отнема околко 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, сравних моите резултати с твоите и има разлика при сортирането по категории. Ти сортираш по подкатегории, а аз по категории.