Не влезло в ограничение на длину комментария (1000 символов), поэтому еще один ответ.
Основные моменты различий в коллекциях:
Из-за особенностей работы с памятью в c# многомерные массивы работают с той же скоростью доступа, что и одномерные, а в Java чем больше размерность меры, тем медленней к ней доступ.
В обоих языках работа с "неровными" массивами одинаково плохая (неровный массив - это массив массивов, где вложенные массивы не одинаковой размерности). Но тут есть момент, что если под неровными массивами брать массивы строк, то работа со строками в Java пошустрее, опять-таки из за того, что в шарпе строки иммутабельны.
И в шарпе и в жаве коллекции есть почти все типичные коллекции List, Dictionary (map), Hashset, Set, Tuple, Array, LinkedList, ObservableList, Tree и прочие.
Ну и не последним штрихом стоит упомянуть, что в жаве, из-за особенностей виртуальной машины, для коллекций незначимых типов происходит "затирание типа". Условно говоря пусть есть базовый класс Base, а от него унаследованы Derive1 и Derive2. В жаве без костылей не сделать методы, сигнатура которых отличается только Coolection
Хм... Вопрос изначально некорректен. Это похоже как сравнивать теплое с мягким.
Сделаем тестирование строк и Java выйдет вперед, поскольку строки в шарпе иммутабельны. Пойдем в работу с коллекциями и Java загнется от одинаковых элементов в Hashset'е, а c# со своими слабосвязными ссылками пережует. Полезем во float и тут вообще все будет зависеть от компьютера, причем непредсказуемым образом.
Давайте еще вспомним, что виртуальная CRL-машина прогревается дольше, зато хорошо кэширует, а каждая вторая Java машина стартует быстро, зато каждый раз как холодный.
Добавить комментарий