Здравствуйте! Я недавно решил попрактиковаться в Java и решить простую задачу про выпуклую оболочку. Мое решение на С++ работает за 0.006 на макс. тесте, А на Java изначально — 0.644, после оптимизаций — 0.373. Мне кажется, что это слишком большая разница (ну не может быть java в 50 раз медленнее! Они утверждают, что Питон за 0.081 заходит!). Прошу вас мне помочь в поиске способа довести решение на java до адекватного времени работы. Сама задача: http://informatics.mccme.ru/mod/statements/view3.php?id=634&chapterid=638#1 Решение на С++: http://pastebin.com/L69S2vGx Решение на Java: http://pastebin.com/HnyTqMuF Заранее благодарен всем за вашу помощь.
Объектов наверно слишком много. Надо попробовать поменять массив точек на два массива координат.
А еще compareTo должен возвращать 0 на равных объектах. Кажется, в седьмой джаве иное поведение будет выбрасывать эксепшен.
Ну, во-первых, java по умолчанию сразу съедает какое-то количество времени, а в процессе работы разница во времени начинает сокращаться. Во-вторых, сильно похоже, что это на этом сервере какая-то медленная java. Там даже задачи за O(1) работают от 0.1с
Да, похоже вы правы. Мое решение с полностью закоментированной функцией main работало 0.277
Ещё, кстати, в данном случае не сильно важно, но локальные переменные могут работать быстрее, а ещё лучше работать со статическими внутренними классами.