Есть ли будущее у DELPHI?
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.43] |
|
|
Правила раздела:
| Страницы: (245) « Первая ... 149 150 [151] 152 153 ... 244 245 ( Перейти к последнему сообщению ) |
Есть ли будущее у DELPHI?
|
Сообщ.
#2251
,
|
|
|
|
миш, ну как может зарулить ну та же сортировка в джаве приплюснутую сортировку?? Да никак. ТОлько если ты под каждую комбинацию тип/функция сравнения будешь ручками писать ручками свой QuickSort. В противном случае - в джаве у тя вместо заинлайненого вывода оператора "<" будет вирутальный вызов. При передаче всяких примитивных типов будет боксинг. И как джава с этим справится?
|
|
Сообщ.
#2252
,
|
|
|
|
Цитата jack128 @ миш, ну как может зарулить ну та же сортировка в джаве приплюснутую сортировку?? Да никак. ТОлько если ты под каждую комбинацию тип/функция сравнения будешь ручками писать ручками свой QuickSort. В противном случае - в джаве у тя вместо заинлайненого вывода оператора "<" будет вирутальный вызов. При передаче всяких примитивных типов будет боксинг. И как джава с этим справится? Ну, это же краевед, он сишные либы под дройда портировал - он всё знает |
|
Сообщ.
#2253
,
|
|
|
|
Цитата jack128 @ В противном случае - в джаве у тя вместо заинлайненого вывода оператора "<" будет вирутальный вызов. Почему? Джава такое отлично инлайнит в рантайме. Кроме того никто не заставляет для пущей оптимизации не вызывать equals, compareTo и прочие. Цитата jack128 @ При передаче всяких примитивных типов будет боксинг. Да шо вы говорите! Integer.intValue() и подобные ему отменили чтоли? Каждая класс-обертка над примитивными типами дает прямой доступ к примитивному типу. Вот метод compareTo() класса Integer: ![]() ![]() /** * The int value represented by this Integer */ private final int value; ... public int compareTo(Integer object) { return compare(value, object.value); } Как видим - операции производятся только над примитивными типами. Боксинг реально нужен только для того чтобы положить числа в дженерик-класс. Анбоксинга же как правило легко избежать. А если мы используем массивы, то что запрещает нам юзать примитивные типы? |
|
Сообщ.
#2254
,
|
|
|
|
[S]mike
ты не понял. нужен универсальный метод, который сортирует _любые_ типы, _любой_ функцией сравнения. что то типа ![]() ![]() void Sort<T>(T [] arr, IComparer<T> comparer){} как ты заинлайнишь IComparer если на каждом вызове Sort - на вход будет подоваться разная реализация IComparer. Как ты избежишь боксинга, если дженерики джавы работают только в компил тайм, то есть в рантайме сигнатура метода выглядит как void Sort(object [] arr, IComparer comparer){}. значит если я на вход подам массив интов, то эти инты обязаны будут бокситься. Цитата [S]mike @ Боксинг реально нужен только для того чтобы положить числа в дженерик-класс. точно. как раз наш случай. |
|
Сообщ.
#2255
,
|
|
|
|
Цитата [S]mike @ Так в том то и штука, что Джава выигрывает у нативного компилятора Дельфи по всем параметрам (C# тоже по большинству): Не знаю, что там за тесты, но факт в том, что нативные приложения работают шустрее. По моему опыту. Приложения на яве и дотнете какие-то неотзывчивые, если можно так выразиться. Добавлено Цитата [S]mike @ Вот Дельфя генерит код для 80386 процессора, хотя на дворе уже многоядерные Core-i7 по несколько гигагерцов и тонны памяти. Толку мне от такого нативного кода? В организациях ещё много старых компьютеров. Не нужно думать только про себя. |
|
Сообщ.
#2256
,
|
|
|
|
Цитата [S]mike @ C++ный код, не использующий "платформенно-ориентированные штуки" можно также использовать. Для плюсов же ситуация другая: сам код якобы кроссплатформенный, но реально чтобы скомпилить его под другую архитектуру - часто требует немало плясок с бубном (говорю как краевед, портировавший сишные либы под Андроид). Джава код, если он не юзает Swing и прочие платформенно-ориентированные штуки - можно использовать под любой поддерживаемой архитектурой. |
|
Сообщ.
#2257
,
|
|
|
|
Цитата X11 @ Не знаю, что там за тесты, но факт в том, что нативные приложения работают шустрее. По моему опыту. Чем мерял? Цитата X11 @ Приложения на яве и дотнете какие-то неотзывчивые, если можно так выразиться. Гуй - ни о чем не говорит. Если Свинг - там все понятно, это ненативный набор виджетов, со всем вытекающим из этого кодом оберток над нативными контролами, собственной отрисовки. Хотя все очень хорошо отзываются о той же JetBrains IntelliJ IDEA, которая на нем родимом и написана, а Эклипс, который использует как раз нативные виджеты под каждой осью (через нативные библиотеки), тормозной. Так что многое определяет сам продукт. Если взять тот же Эклипс, то функционал у него куда богаче Дельфей, так что и тормоза закономерны. А под Андроидом Джава весьма быстро бегает. Цитата X11 @ В организациях ещё много старых компьютеров. Не нужно думать только про себя. Хотел сначала ответить в стиле Кролега. Но воздержусь и просто возражу, что никаких проблем: программа на Джаве будет работать как на старых компах, так и на новых, но на каждом будет генерироваться оптимальный код. А не так, что все давно ставят 64-битные винды и по 4-32 гига памяти, а большинство софта по прежнему 32 бита. Добавлено Цитата Adil @ C++ный код, не использующий "платформенно-ориентированные штуки" можно также использовать. А ты знаешь, что Андроидовский НДК не умеет различать системные инклюды с инклюдами в проекте, которые просто-напросто имеют такое же имя? Например, time.h. Такое было у меня при компиляции ffmpeg. Вот тебе и пляски с бубном на ровном месте. |
|
Сообщ.
#2258
,
|
|
|
|
Цитата [S]mike @ А под Андроидом Джава весьма быстро бегает. ага, на 2-4 ядерных процах, с 1-2 гагами оперативки там видеоадаптеры и то имеют по 2-4 ядра Добавлено Не понимаю, зачем вообще мерить, есть если все тормоза приложения видно и без тестов. Я не спорю, может какой-нибудь алгоритм сортировки или цикл на мульён итерацие быстрее отработает в яве, но пользователь нажал кнопку для показа окна и ждёт 2-3 секунды, пока оно появится. Ну это так к примеру. Отрисовка интерфейса подтормаживает. Но то, что ты сказал про то, что всё зависит от самого приложения - это 100% я согласен. |
|
Сообщ.
#2259
,
|
|
|
|
Цитата jack128 @ Как ты избежишь боксинга, если дженерики джавы работают только в компил тайм, то есть в рантайме сигнатура метода выглядит как void Sort(object [] arr, IComparer comparer){}. значит если я на вход подам массив интов, то эти инты обязаны будут бокситься. Инты как таковые бокситься не будут, так как ты просто не передашь массив интов как дженерик массив Примитивные типы в Джаве нельзя использовать в дженерик методах.Это проблема, да. Но вот инлайнинг здесь вполне реален. Да, это дженерик метод, но ведь в конкретном месте кода он обретает вполне себе конкретный тип, и может быть заинлайнена реализация сортировки под конкретный тип в конкретном месте. Но проблема на самом деле надумана, так как джава уже содержит реализации сортировки массивов для всех примитивных типов. А если бы мы столкнулись с такой задачей на практике - то врядли бы у нас стояла задача "написать универсальный механизм сортировки", а сделать это для решения конкретной задачи. Так что не смотря на наличие такого негативного момента, на практике это не слишком хороший пример, где плюсы могут потягаться с джавой по производительности. Все что можно признать - то что плюсы таки да, лучше для разработчи стандартных библиотек (в Джаве приходится копипастить реализации для примитивных типов, что и сделано в коде сортировки массивов примитивных типов в стандартной библиотеке Джавы), либо мириться с потенциально худшей производительностью) |
|
Сообщ.
#2260
,
|
|
|
|
Цитата [S]mike @ все давно ставят 64-битные винды и по 4-32 гига памяти, а большинство софта по прежнему 32 бита. а зачем писать 64-ьитную программу, если ей и так хорошо даже M$ рекомендует ставить 32битный офис на 64битную винду, если нет реальной необходимости в 64битном офисе вроде бы офис 2007 использовал дотнет и был тормознутый, а вот 2010ый просто летает по сравнению с 2007ым, 2010 уже полностью нативный, ссылок предоставить не могу, давно читал и не помню уже где Добавлено Цитата [S]mike @ все давно ставят 64-битные винды и по 4-32 гига памяти, а большинство софта по прежнему 32 бита. зато 32битная софтина будет работать на обоих виндах ![]() многие до сих пор ставят x32 я, например, для организации за последние 3 года купил много виндов, в основном стартер и хомяк, и все 32битные нет реальной необходимости ставить 64битную винду |
|
Сообщ.
#2261
,
|
|
|
|
Цитата X11 @ ага, на 2-4 ядерных процах, с 1-2 гагами оперативки там видеоадаптеры и то имеют по 2-4 ядра Да и на одноядерных 600 мегагерцовых процах отлично все бегало! Кроме того не забывай, что мобильные процы не чета десктопным. И десктопный одногигагерцовый проц в разы быстрее телефонного. А на 600 мегагерцовом десктопном проце сейчас даже написанная на Сях Windows 7 не пойдет! Цитата X11 @ Не понимаю, зачем вообще мерить, есть если все тормоза приложения видно и без тестов. Цитата X11 @ Но то, что ты сказал про то, что всё зависит от самого приложения - это 100% я согласен. Ага, поэтому хотелось бы узнать, о каком вообще приложении мы говорим? И с чем сравниваем? Крупная IDE не может быть по быстроте, как блокнот, написанный на Дельфях. |
|
Сообщ.
#2262
,
|
|
|
|
Цитата [S]mike @ А на 600 мегагерцовом десктопном проце сейчас даже написанная на Сях Windows 7 не пойдет! на 600 да, а на 2,8 с 1 гигом оперативы я ставил, когда давно, ещё тестовую бету, подтормаживало, но работала |
|
Сообщ.
#2263
,
|
|
|
|
Цитата [S]mike @ Да, это дженерик метод, но ведь в конкретном месте кода он обретает вполне себе конкретный тип, и может быть заинлайнена реализация сортировки под конкретный тип в конкретном месте. нет, не может. потому что в конкретном месте байт кода - нету конкретного типа. Только object. соотественно джит ничего не может заинлайнить. Цитата [S]mike @ так как джава уже содержит реализации сортировки массивов для всех примитивных типов. а толку? эти реализации все равно нельзя использовать в обощенном коде. Цитата [S]mike @ А если бы мы столкнулись с такой задачей на практике - то врядли бы у нас стояла задача "написать универсальный механизм сортировки", а сделать это для решения конкретной задачи ахренеть. А нафиг вам в жабе вообще дженерики с таким подходом?? Я то, наивный, думал, что они нужны для написания обощенных алгоритмов, а тут оказывается такие алго и не нужны. написал конкретный код для конкретной задачи - и свободен. |
|
Сообщ.
#2264
,
|
|
|
|
Цитата jack128 @ нет, не может. потому что в конкретном месте байт кода - нету конкретного типа. Как это нету? Покажи пример. ![]() ![]() private <T extends Comparable<T>> void sort(T[] array) {...} ... Integer[] array = new Integer[10000]; sort(array); Где здесь нету конкретного типа? То что в Джаве поддержка дженериков сделана по сути как враппер над тайпкастами - это совсем другое дело. И имеет значение, когда нам нужно, например, извлечь из списка конкретный объект и привести его к нужному типу. Но здесь - вызывается вполне конкретный код вполне конкретного класса. Ничто не мешает его заинлайнить. |
|
Сообщ.
#2265
,
|
|
|
|
Цитата X11 @ а зачем писать 64-ьитную программу, если ей и так хорошо Может, чтобы использовать все возможности процессора? Это все равно что закажешь в ресторане стейк с картошкой фри, а съешь только стейк. А зачем тогда картошку фри заказывал? Цитата X11 @ даже M$ рекомендует ставить 32битный офис на 64битную винду, если нет реальной необходимости в 64битном офисе Можно пруф? С чего бы это? Цитата X11 @ вроде бы офис 2007 использовал дотнет и был тормознутый, а вот 2010ый просто летает по сравнению с 2007ым, 2010 уже полностью нативный, ссылок предоставить не могу, давно читал и не помню уже где Нативный был как 2007, так и 2010. Но вызвано это скорее не тем, что нужна максимальная производительность, а тем, что есть уже куча готового кода, который нету практически смысла переносить на managed-платформу. Тем более что на WinRT полнофункциональный офис как бы не шибко и нужен - набирать документы на планшете, даже с док станцией/клавой - это убийство. Цитата X11 @ зато 32битная софтина будет работать на обоих виндах ![]() И под Windows RT? Цитата X11 @ я, например, для организации за последние 3 года купил много виндов, в основном стартер и хомяк, и все 32битные нет реальной необходимости ставить 64битную винду Ну живите в своем забитом мирке дальше Планшеты вам точно лет 10 еще не светят! |