На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (245) « Первая ... 149 150 [151] 152 153 ...  244 245  ( Перейти к последнему сообщению )  
> Есть ли будущее у DELPHI?
    миш, ну как может зарулить ну та же сортировка в джаве приплюснутую сортировку?? Да никак. ТОлько если ты под каждую комбинацию тип/функция сравнения будешь ручками писать ручками свой QuickSort. В противном случае - в джаве у тя вместо заинлайненого вывода оператора "<" будет вирутальный вызов. При передаче всяких примитивных типов будет боксинг. И как джава с этим справится?
      Цитата jack128 @
      миш, ну как может зарулить ну та же сортировка в джаве приплюснутую сортировку?? Да никак. ТОлько если ты под каждую комбинацию тип/функция сравнения будешь ручками писать ручками свой QuickSort. В противном случае - в джаве у тя вместо заинлайненого вывода оператора "<" будет вирутальный вызов. При передаче всяких примитивных типов будет боксинг. И как джава с этим справится?

      Ну, это же краевед, он сишные либы под дройда портировал - он всё знает :rolleyes:
        Цитата jack128 @
        В противном случае - в джаве у тя вместо заинлайненого вывода оператора "<" будет вирутальный вызов.

        Почему? Джава такое отлично инлайнит в рантайме. Кроме того никто не заставляет для пущей оптимизации не вызывать equals, compareTo и прочие.

        Цитата jack128 @
        При передаче всяких примитивных типов будет боксинг.

        Да шо вы говорите! Integer.intValue() и подобные ему отменили чтоли? Каждая класс-обертка над примитивными типами дает прямой доступ к примитивному типу.

        Вот метод compareTo() класса Integer:
        ExpandedWrap disabled
              /**
               * The int value represented by this Integer
               */
              private final int value;
          ...
              public int compareTo(Integer object) {
                  return compare(value, object.value);
              }


        Как видим - операции производятся только над примитивными типами.


        Боксинг реально нужен только для того чтобы положить числа в дженерик-класс. Анбоксинга же как правило легко избежать. А если мы используем массивы, то что запрещает нам юзать примитивные типы?
        Сообщение отредактировано: [S]mike -
          [S]mike
          ты не понял. нужен универсальный метод, который сортирует _любые_ типы, _любой_ функцией сравнения.

          что то типа

          ExpandedWrap disabled
            void Sort<T>(T [] arr, IComparer<T> comparer){}


          как ты заинлайнишь IComparer если на каждом вызове Sort - на вход будет подоваться разная реализация IComparer.

          Как ты избежишь боксинга, если дженерики джавы работают только в компил тайм, то есть в рантайме сигнатура метода выглядит как
          void Sort(object [] arr, IComparer comparer){}. значит если я на вход подам массив интов, то эти инты обязаны будут бокситься.


          Цитата [S]mike @
          Боксинг реально нужен только для того чтобы положить числа в дженерик-класс.

          точно. как раз наш случай.
            Цитата [S]mike @
            Так в том то и штука, что Джава выигрывает у нативного компилятора Дельфи по всем параметрам (C# тоже по большинству):

            Не знаю, что там за тесты, но факт в том, что нативные приложения работают шустрее. По моему опыту. Приложения на яве и дотнете какие-то неотзывчивые, если можно так выразиться.

            Добавлено
            Цитата [S]mike @
            Вот Дельфя генерит код для 80386 процессора, хотя на дворе уже многоядерные Core-i7 по несколько гигагерцов и тонны памяти. Толку мне от такого нативного кода?

            В организациях ещё много старых компьютеров. Не нужно думать только про себя.
              Цитата [S]mike @
              Для плюсов же ситуация другая: сам код якобы кроссплатформенный, но реально чтобы скомпилить его под другую архитектуру - часто требует немало плясок с бубном (говорю как краевед, портировавший сишные либы под Андроид). Джава код, если он не юзает Swing и прочие платформенно-ориентированные штуки - можно использовать под любой поддерживаемой архитектурой.
              C++ный код, не использующий "платформенно-ориентированные штуки" можно также использовать.
                Цитата X11 @
                Не знаю, что там за тесты, но факт в том, что нативные приложения работают шустрее. По моему опыту.

                Чем мерял? :D

                Цитата X11 @
                Приложения на яве и дотнете какие-то неотзывчивые, если можно так выразиться.

                Гуй - ни о чем не говорит. Если Свинг - там все понятно, это ненативный набор виджетов, со всем вытекающим из этого кодом оберток над нативными контролами, собственной отрисовки. Хотя все очень хорошо отзываются о той же JetBrains IntelliJ IDEA, которая на нем родимом и написана, а Эклипс, который использует как раз нативные виджеты под каждой осью (через нативные библиотеки), тормозной. Так что многое определяет сам продукт. Если взять тот же Эклипс, то функционал у него куда богаче Дельфей, так что и тормоза закономерны. А под Андроидом Джава весьма быстро бегает.

                Цитата X11 @
                В организациях ещё много старых компьютеров. Не нужно думать только про себя.

                Хотел сначала ответить в стиле Кролега. Но воздержусь и просто возражу, что никаких проблем: программа на Джаве будет работать как на старых компах, так и на новых, но на каждом будет генерироваться оптимальный код. А не так, что все давно ставят 64-битные винды и по 4-32 гига памяти, а большинство софта по прежнему 32 бита.

                Добавлено
                Цитата Adil @
                C++ный код, не использующий "платформенно-ориентированные штуки" можно также использовать.

                А ты знаешь, что Андроидовский НДК не умеет различать системные инклюды с инклюдами в проекте, которые просто-напросто имеют такое же имя? :lol: Например, time.h. Такое было у меня при компиляции ffmpeg. Вот тебе и пляски с бубном на ровном месте.
                  Цитата [S]mike @
                  А под Андроидом Джава весьма быстро бегает.

                  ага, на 2-4 ядерных процах, с 1-2 гагами оперативки
                  там видеоадаптеры и то имеют по 2-4 ядра

                  Добавлено
                  Не понимаю, зачем вообще мерить, есть если все тормоза приложения видно и без тестов.
                  Я не спорю, может какой-нибудь алгоритм сортировки или цикл на мульён итерацие быстрее отработает в яве, но пользователь нажал кнопку для показа окна и ждёт 2-3 секунды, пока оно появится. Ну это так к примеру. Отрисовка интерфейса подтормаживает.
                  Но то, что ты сказал про то, что всё зависит от самого приложения - это 100% я согласен.
                    Цитата jack128 @
                    Как ты избежишь боксинга, если дженерики джавы работают только в компил тайм, то есть в рантайме сигнатура метода выглядит как
                    void Sort(object [] arr, IComparer comparer){}. значит если я на вход подам массив интов, то эти инты обязаны будут бокситься.

                    Инты как таковые бокситься не будут, так как ты просто не передашь массив интов как дженерик массив :lol: Примитивные типы в Джаве нельзя использовать в дженерик методах.

                    Это проблема, да. Но вот инлайнинг здесь вполне реален. Да, это дженерик метод, но ведь в конкретном месте кода он обретает вполне себе конкретный тип, и может быть заинлайнена реализация сортировки под конкретный тип в конкретном месте.

                    Но проблема на самом деле надумана, так как джава уже содержит реализации сортировки массивов для всех примитивных типов. А если бы мы столкнулись с такой задачей на практике - то врядли бы у нас стояла задача "написать универсальный механизм сортировки", а сделать это для решения конкретной задачи. Так что не смотря на наличие такого негативного момента, на практике это не слишком хороший пример, где плюсы могут потягаться с джавой по производительности. Все что можно признать - то что плюсы таки да, лучше для разработчи стандартных библиотек :D (в Джаве приходится копипастить реализации для примитивных типов, что и сделано в коде сортировки массивов примитивных типов в стандартной библиотеке Джавы), либо мириться с потенциально худшей производительностью)
                      Цитата [S]mike @
                      все давно ставят 64-битные винды и по 4-32 гига памяти, а большинство софта по прежнему 32 бита.

                      а зачем писать 64-ьитную программу, если ей и так хорошо
                      даже M$ рекомендует ставить 32битный офис на 64битную винду, если нет реальной необходимости в 64битном офисе

                      вроде бы офис 2007 использовал дотнет и был тормознутый, а вот 2010ый просто летает по сравнению с 2007ым, 2010 уже полностью нативный, ссылок предоставить не могу, давно читал и не помню уже где :blush:

                      Добавлено
                      Цитата [S]mike @
                      все давно ставят 64-битные винды и по 4-32 гига памяти, а большинство софта по прежнему 32 бита.

                      зато 32битная софтина будет работать на обоих виндах :)
                      многие до сих пор ставят x32
                      я, например, для организации за последние 3 года купил много виндов, в основном стартер и хомяк, и все 32битные
                      нет реальной необходимости ставить 64битную винду
                        Цитата X11 @
                        ага, на 2-4 ядерных процах, с 1-2 гагами оперативки
                        там видеоадаптеры и то имеют по 2-4 ядра

                        Да и на одноядерных 600 мегагерцовых процах отлично все бегало!

                        Кроме того не забывай, что мобильные процы не чета десктопным. И десктопный одногигагерцовый проц в разы быстрее телефонного. А на 600 мегагерцовом десктопном проце сейчас даже написанная на Сях Windows 7 не пойдет!

                        Цитата X11 @
                        Не понимаю, зачем вообще мерить, есть если все тормоза приложения видно и без тестов.

                        Цитата X11 @
                        Но то, что ты сказал про то, что всё зависит от самого приложения - это 100% я согласен.

                        Ага, поэтому хотелось бы узнать, о каком вообще приложении мы говорим? :lol: И с чем сравниваем? Крупная IDE не может быть по быстроте, как блокнот, написанный на Дельфях.
                          Цитата [S]mike @
                          А на 600 мегагерцовом десктопном проце сейчас даже написанная на Сях Windows 7 не пойдет!

                          на 600 да, а на 2,8 с 1 гигом оперативы я ставил, когда давно, ещё тестовую бету, подтормаживало, но работала
                            Цитата [S]mike @
                            Да, это дженерик метод, но ведь в конкретном месте кода он обретает вполне себе конкретный тип, и может быть заинлайнена реализация сортировки под конкретный тип в конкретном месте.

                            нет, не может. потому что в конкретном месте байт кода - нету конкретного типа. Только object. соотественно джит ничего не может заинлайнить.


                            Цитата [S]mike @
                            так как джава уже содержит реализации сортировки массивов для всех примитивных типов.

                            а толку? эти реализации все равно нельзя использовать в обощенном коде.

                            Цитата [S]mike @
                            А если бы мы столкнулись с такой задачей на практике - то врядли бы у нас стояла задача "написать универсальный механизм сортировки", а сделать это для решения конкретной задачи

                            ахренеть. А нафиг вам в жабе вообще дженерики с таким подходом?? Я то, наивный, думал, что они нужны для написания обощенных алгоритмов, а тут оказывается такие алго и не нужны. написал конкретный код для конкретной задачи - и свободен.
                              Цитата jack128 @
                              нет, не может. потому что в конкретном месте байт кода - нету конкретного типа.

                              Как это нету? Покажи пример.

                              ExpandedWrap disabled
                                private <T extends Comparable<T>> void sort(T[] array) {...}
                                 
                                ...
                                 
                                Integer[] array = new Integer[10000];
                                sort(array);


                              Где здесь нету конкретного типа?

                              То что в Джаве поддержка дженериков сделана по сути как враппер над тайпкастами - это совсем другое дело. И имеет значение, когда нам нужно, например, извлечь из списка конкретный объект и привести его к нужному типу. Но здесь - вызывается вполне конкретный код вполне конкретного класса. Ничто не мешает его заинлайнить.
                                Цитата X11 @
                                а зачем писать 64-ьитную программу, если ей и так хорошо

                                Может, чтобы использовать все возможности процессора? Это все равно что закажешь в ресторане стейк с картошкой фри, а съешь только стейк. А зачем тогда картошку фри заказывал?

                                Цитата X11 @
                                даже M$ рекомендует ставить 32битный офис на 64битную винду, если нет реальной необходимости в 64битном офисе

                                Можно пруф? С чего бы это?

                                Цитата X11 @
                                вроде бы офис 2007 использовал дотнет и был тормознутый, а вот 2010ый просто летает по сравнению с 2007ым, 2010 уже полностью нативный, ссылок предоставить не могу, давно читал и не помню уже где :blush:

                                Нативный был как 2007, так и 2010. Но вызвано это скорее не тем, что нужна максимальная производительность, а тем, что есть уже куча готового кода, который нету практически смысла переносить на managed-платформу. Тем более что на WinRT полнофункциональный офис как бы не шибко и нужен - набирать документы на планшете, даже с док станцией/клавой - это убийство.

                                Цитата X11 @
                                зато 32битная софтина будет работать на обоих виндах :)

                                И под Windows RT? :lol:

                                Цитата X11 @
                                я, например, для организации за последние 3 года купил много виндов, в основном стартер и хомяк, и все 32битные
                                нет реальной необходимости ставить 64битную винду

                                Ну живите в своем забитом мирке дальше :yes: Планшеты вам точно лет 10 еще не светят!
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (245) « Первая ... 149 150 [151] 152 153 ...  244 245


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1634 ]   [ 15 queries used ]   [ Generated: 22.12.25, 05:05 GMT ]