Софтуерно Инженерство
Loading...
supersane avatar supersane 233 Точки

Data Structures Exam

Здравейте, решавах задачата от изпита по структури от данни на Java. Въпроса ми е дали даденото време за работа става и за Java, понеже бях гледал клипове, където RoYaL решава задачи от Advanced C#, като ги submit-ва на Java някои тестове гърмяха за време, и той го увеличаваше малко от администрирането на изпита. 

Тагове:
supersane avatar supersane 233 Точки

Явно има нужда от оптимизация. Ето това е кода. 2 теста от performance минават, другите гърмят,  и 3 гърмят за грешен отговор, на тях не мога да си открия грешката, а и тестовете ги няма качени... Всичко нередно, което забележите ще се радвам ако ми го кажете. Благодаря ви :)

edit: Структурата от хешмап за игрите я направих на treemap и 2 от тестовете за грешен отговор минаха, само последния ми остана.

edit2: Намерих тестовете, виждам, че първия за време дето гърми е от добавяне на потребител. Аз добавям в хешмап, където е константа, колко по-оптимално може да е?

0
10/11/2015 01:40:18
krach avatar krach 65 Точки

Като идея не знам дали ще дигне преформънса но все пак да не правиш излишни проверки - на ред 57-58-59 с многото ифове, защо не направиш референция от тип HashMap>> currentGameToScore = scoreboard.get(gameToScore) и после да работиш с нея вместо да гетваш отновоотновно.

HashMap>> currentGameToScore = scoreboard.get(gameToScore)
  if (currentGameToScore !=null) { //тук вместо scoreboard.containsKey(gameToScore))  проверяваме дали е null

                                                if (currentGameToScore .containsKey(userForScore)) {

                                                       currentGameToScore get(userForScore).add(score);

                                                        System.out.println("Score added");

                                                } else {.....

 

0
supersane avatar supersane 233 Точки

Разбрах ти мисълта колега и благодаря за съвета. Честно казано по принцип и аз така го правя, но тук в тази задача, мислех, че по този начин ще заделям допълнителна памет и затова не го правих, но явно съм бил в грешка. Мерси, че си отделил и време и си разгледал кода ми :)

0