На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (245) « Первая ... 230 231 [232] 233 234 ...  244 245  ( Перейти к последнему сообщению )  
> Есть ли будущее у DELPHI?
    Цитата jack128 @
    странно, что столь эпичный пост прошел мимо топика: ­http://kazav.blogspot.ru/2014/01/delphi-2.html

    Потому что я читаю только delphifeeds.ru. Цензура, однако.
      Так кто мне объяснит что именно не так с кодогенерацией? :unsure:
        Ну я не знаю как объяснить. Один и тот же дельфиский код на разных версиях компилятора генерит разный машинный код. Причем чем новее версия компилятора - тех хуже выходной результат.
          Цитата jack128 @
          Причем чем новее версия компилятора - тех хуже выходной результат.

          Так вот я и не понимаю в чём он хуже... Вот в первой части - там просто заинлайнилась функция, почему это плохо?
            Цитата MyNameIsIgor @
            Так вот я и не понимаю в чём он хуже... Вот в первой части - там просто заинлайнилась функция, почему это плохо?

            Не знаю, что ты имеешь в виду под первой частью, но по ссылке видно, что результирующий асмо-код в XE5 раз в 10 превышает по количеству операций результат компиляции в Delphi 2006.

            Или я что-то не догоняю?
              В 10?
              ExpandedWrap disabled
                program inline_bug;
                 
                {$APPTYPE CONSOLE}
                 
                {$OPTIMIZATION ON}
                {$INLINE ON}
                 
                {$R *.res}
                 
                uses
                  SysUtils;
                 
                Type
                 
                 Utils = Class
                 
                  Type
                 
                   Namespace = Class
                 
                    Class Function CompareString(Const ALeft, ARight : String) : Integer; Static; Inline;
                    Class Function CompareText(Const ALeft, ARight : String) : Integer; Static; Inline;
                 
                    Class Function SameString(Const ALeft, ARight : String; ACaseSensitive : Boolean = True) : Boolean; Static; Inline;
                 
                   End;
                 
                 End;
                 
                { Utils.NameSpace }
                 
                //
                Class Function Utils.Namespace.CompareString(const ALeft, ARight : System.String) : Integer;
                Begin
                 
                 Result := SysUtils.CompareStr(ALeft, ARight);
                 
                End;
                //
                 
                //
                Class Function Utils.Namespace.CompareText(Const ALeft, ARight : String) : Integer;
                Begin
                 
                 Result := SysUtils.CompareText(ALeft, ARight);
                 
                End;
                //
                 
                //
                Class Function Utils.Namespace.SameString(Const ALeft, ARight : String; ACaseSensitive : Boolean) : Boolean;
                begin
                 
                 If ACaseSensitive Then
                  Result := Utils.Namespace.CompareString(ALeft, ARight) = 0
                 Else
                  Result := Utils.Namespace.CompareText(ALeft, Aright) = 0;
                 
                End;
                //
                 
                Var
                 
                 s1, s2 : String;
                 
                begin
                 
                 Utils.Namespace.CompareString(S1, S2);
                 Utils.Namespace.SameString(S1, S2);
                 s1 := '';
                 
                end.
              Delphi 2006 - XE:
              ExpandedWrap disabled
                inline_bug.dpr.68: Utils.Namespace.CompareString(S1, S2);
                0040915A 8B1524E24000     mov edx,[$0040e224]
                00409160 A120E24000       mov eax,[$0040e220]
                00409165 E8F2C7FFFF       call CompareStr
                inline_bug.dpr.69: Utils.Namespace.SameString(S1, S2);
                0040916A 8B1524E24000     mov edx,[$0040e224]
                00409170 A120E24000       mov eax,[$0040e220]
                00409175 E8E2C7FFFF       call CompareStr
                0040917A 85C0             test eax,eax
                0040917C 0F94C0           setz al
              Delphi XE5 Update 2 (19.0.14356.6604):
              ExpandedWrap disabled
                inline_bug.dpr.68: Utils.Namespace.CompareString(S1, S2);
                0041B3F4 8D45EC           lea eax,[ebp-$14]
                0041B3F7 8B15BC2E4200     mov edx,[$00422ebc]
                0041B3FD E85EACFEFF       call @UStrLAsg
                0041B402 8D45E8           lea eax,[ebp-$18]
                0041B405 8B15C02E4200     mov edx,[$00422ec0]
                0041B40B E850ACFEFF       call @UStrLAsg
                0041B410 33C0             xor eax,eax
                0041B412 55               push ebp
                0041B413 684AB44100       push $0041b44a
                0041B418 64FF30           push dword ptr fs:[eax]
                0041B41B 648920           mov fs:[eax],esp
                0041B41E 8B55E8           mov edx,[ebp-$18]
                0041B421 8B45EC           mov eax,[ebp-$14]
                0041B424 E8DB79FFFF       call CompareStr
                0041B429 8945CC           mov [ebp-$34],eax
                0041B42C 33C0             xor eax,eax
                0041B42E 5A               pop edx
                0041B42F 59               pop ecx
                0041B430 59               pop ecx
                0041B431 648910           mov fs:[eax],edx
                0041B434 6851B44100       push $0041b451
                0041B439 8D45EC           lea eax,[ebp-$14]
                0041B43C E803A9FEFF       call @UStrClr
                0041B441 8D45E8           lea eax,[ebp-$18]
                0041B444 E8FBA8FEFF       call @UStrClr
                0041B449 C3               ret
                0041B44A E901A0FEFF       jmp @HandleFinally
                0041B44F EBE8             jmp $0041b439
                inline_bug.dpr.69: Utils.Namespace.SameString(S1, S2);
                0041B451 8D45E4           lea eax,[ebp-$1c]
                0041B454 8B15BC2E4200     mov edx,[$00422ebc]
                0041B45A E801ACFEFF       call @UStrLAsg
                0041B45F 8D45E0           lea eax,[ebp-$20]
                0041B462 8B15C02E4200     mov edx,[$00422ec0]
                0041B468 E8F3ABFEFF       call @UStrLAsg
                0041B46D 8D45DC           lea eax,[ebp-$24]
                0041B470 E8CFA8FEFF       call @UStrClr
                0041B475 8D45D8           lea eax,[ebp-$28]
                0041B478 E8C7A8FEFF       call @UStrClr
                0041B47D 8D45D4           lea eax,[ebp-$2c]
                0041B480 E8BFA8FEFF       call @UStrClr
                0041B485 8D45D0           lea eax,[ebp-$30]
                0041B488 E8B7A8FEFF       call @UStrClr
                0041B48D 33C0             xor eax,eax
                0041B48F 55               push ebp
                0041B490 6838B54100       push $0041b538
                0041B495 64FF30           push dword ptr fs:[eax]
                0041B498 648920           mov fs:[eax],esp
                0041B49B 8D45DC           lea eax,[ebp-$24]
                0041B49E 8B55E4           mov edx,[ebp-$1c]
                0041B4A1 E8BAABFEFF       call @UStrLAsg
                0041B4A6 8D45D8           lea eax,[ebp-$28]
                0041B4A9 8B55E0           mov edx,[ebp-$20]
                0041B4AC E8AFABFEFF       call @UStrLAsg
                0041B4B1 33C0             xor eax,eax
                0041B4B3 55               push ebp
                0041B4B4 68EBB44100       push $0041b4eb
                0041B4B9 64FF30           push dword ptr fs:[eax]
                0041B4BC 648920           mov fs:[eax],esp
                0041B4BF 8B55D8           mov edx,[ebp-$28]
                0041B4C2 8B45DC           mov eax,[ebp-$24]
                0041B4C5 E83A79FFFF       call CompareStr
                0041B4CA 8945C4           mov [ebp-$3c],eax
                0041B4CD 33C0             xor eax,eax
                0041B4CF 5A               pop edx
                0041B4D0 59               pop ecx
                0041B4D1 59               pop ecx
                0041B4D2 648910           mov fs:[eax],edx
                0041B4D5 68F2B44100       push $0041b4f2
                0041B4DA 8D45DC           lea eax,[ebp-$24]
                0041B4DD E862A8FEFF       call @UStrClr
                0041B4E2 8D45D8           lea eax,[ebp-$28]
                0041B4E5 E85AA8FEFF       call @UStrClr
                0041B4EA C3               ret
                0041B4EB E9609FFEFF       jmp @HandleFinally
                0041B4F0 EBE8             jmp $0041b4da
                0041B4F2 837DC400         cmp dword ptr [ebp-$3c],$00
                0041B4F6 0F9445CB         setz byte ptr [ebp-$35]
                0041B4FA 33C0             xor eax,eax
                0041B4FC 5A               pop edx
                0041B4FD 59               pop ecx
                0041B4FE 59               pop ecx
                0041B4FF 648910           mov fs:[eax],edx
                0041B502 683FB54100       push $0041b53f
                0041B507 8D45E4           lea eax,[ebp-$1c]
                0041B50A E835A8FEFF       call @UStrClr
                0041B50F 8D45E0           lea eax,[ebp-$20]
                0041B512 E82DA8FEFF       call @UStrClr
                0041B517 8D45DC           lea eax,[ebp-$24]
                0041B51A E825A8FEFF       call @UStrClr
                0041B51F 8D45D8           lea eax,[ebp-$28]
                0041B522 E81DA8FEFF       call @UStrClr
                0041B527 8D45D4           lea eax,[ebp-$2c]
                0041B52A E815A8FEFF       call @UStrClr
                0041B52F 8D45D0           lea eax,[ebp-$30]
                0041B532 E80DA8FEFF       call @UStrClr
                0041B537 C3               ret
                0041B538 E9139FFEFF       jmp @HandleFinally
                0041B53D EBC8             jmp $0041b507


              Добавлено
              Кто там сравнивал Дельфи с Джавой?
                Цитата

                Сева, я хочу, чтобы ты донёс до людей, что "проблема подключения" - не проблема Delphi, а проблема драйверов Windows. Тот, кто сталкивается с этим в Delphi, винит в первую очередь Delphi, также как, например, в своё время винил я. Но нужно донести до общественности, что эта проблема встречается У ВСЕХ систем разработки, а не конкретно у Delphi. Так что такая ситуация с андроидными устройствами - НОРМА. И не надо расстраиваться, просто надо понимать ситуацию, и знать, куда копать. А копать-то на самом деле особо глубоко - и не нужно. Просто "Диспетчер Устройств", просто "Драйвер".

                http://blogs.embarcadero.com/vsevolodleonov/2014/02/07/zoo/

                Рыдал. А разве Дельфи не виновата в том, что на ней нельзя вести разработку там, где проблем с дровами нету (под Маком и Линуксом)?
                  Qraizer, а ничего что строки после 2009 версии стали юникодными! Просто таим идет куча проверок, мало ли введена ansi или utf8 строка, все это конвертируется, плюс добавлены try finally|exception что-бы программа не упала, если строка кривая. Глупое сравнение короче. На С++ покажи лаконичный асм код, где идет конвертация ansi->utf8->unicode и сравнение.

                  Правильней ИМХО будет сравнивать код с числами и циклами.
                    Цитата Dik0n @
                    На С++ покажи лаконичный асм код, где идет конвертация ansi->utf8->unicode и сравнение.

                    А где в приведеном выше коде есть конвертация ansi->utf8->unicode ?

                    Добавлено
                    Цитата Dik0n @
                    Глупое сравнение короче

                    Чем глупое? Тут сравнивают выхлопной асм код одного и того же кода на разных версиях делфи. Тут нет сравнения асм кода генеренного в делфи с асм кодом генерированным в С/С++. Так что отнюдь :-?
                      Dik0n, тут элементарное отсутствие встраивания, как следствие создание кучи копий исходных строк, передающихся по значению, отсюда неявные finally, которые зачищают костыли ссылочной её мать семантики строк, которые якобы значения.
                        Ну с юникодными строками они возможно намудрили, так как долго добавить не могли, и добавили как есть, без оптимизации, лишь бы отстали. Но это не компилятор хуже стал код выдавать, а просто проверок тонну добавили в системные модули, и это как бы касается именно строк. Говорю код с числами, указателями, должен быть примерно одинаков.

                        Ну, как бы спор начинать я не хотел, все равно, сейчас никто не считает тики процессора и сколько потребляется оперативки, как говорится - <удалено>, <удалено> и в продакшн :D
                        Сообщение отредактировано: Мяут-Настоящий -
                          Цитата Dik0n @
                          Ну и как бы спор начинать я не хотел, все равно, сейчас никто не считает тики процессора и сколько потребляется оперативки, как говорится - <удалено>, <удалено> и в продакшн

                          Считают. И лично у меня порой складывается впечатление, что с 2000ных ничего не изменилось. Что в 2003 у меня был комп тупило все из за нехватки проца и оперативы, что сейчас у меня уже другой комп и все аналогично. ПО пишут безалаберно, никто не задумывается о тиках проца и о количестве рамы, и на выходе получается говноподелие, которое жрет памяти и проца столько, что это просто научно необъяснимо.
                          Сообщение отредактировано: Мяут-Настоящий -
                            Ну для обычных программ я не считаю. А вот для игр, которые кстате пишут на С++, успевай только компы менять. Вроде и графика не сильно улучшается, а что не новая игра, так чуть ли не каждый раз за новой видеокартой приходится бежать, когда как для консолей теже игры идут нормально, хотя железо там, грубо говоря 8 летней давности (ну это я про старое поколение).
                              Цитата Dik0n @
                              А вот для игр, которые кстате пишут на С++, успевай только компы менять

                              Так не на одном С++ пишут. Да и причем тут игры? Туда всетаки железу еще рости и рости. И тупят они там не от того что плохо написаны(хотя и такие попадаются), а от того что сложные модели + очень много информации приходится обрабатывать и хранить.
                              Я тебе говорю за обычные программы. Какая нибудь перделка для смены обоев рабочего стола, может и не будет тупить, а более менее приличная - уже начинает жрать памяти как депутат бабло из бюджета. Но делфи это наверное не касается, на ней уж поди и не пишут ничего серьезного.
                                Меня больше прикалывает - писал программист программы на Delphi. Ктото сказал, все не актуально изжил он себя, пойдем на .NET. Прогер накопил опять кучу кода, изучил кучу библиотек и опять, можен на Java свалим ? В итоге изучил кучу яп, а кроме как писать код для баз данных, на куче языков, нифига и не познал :)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (245) « Первая ... 230 231 [232] 233 234 ...  244 245


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1904 ]   [ 14 queries used ]   [ Generated: 19.07.25, 11:22 GMT ]