Re[27]: Delphi 2009 vs C# 3.0
От: kuj  
Дата: 05.11.08 21:30
Оценка:
Здравствуйте, Utruk, Вы писали:

U>>>Т.е вы хотите сказать что если я скажем перепишу анализ документа на C#, то при одинаковом алгоритме он будет быстрее чем на Delphi?

G>>При одинаковом алгоритме конечно нет. А если написать хороший алгоритм для .NET, то прога на C# окажется быстрее, а код станет гораздо более удобочитаемый.
U>Ну дык и для нативного приложения можно написать хороший алгоритм. Разве не так?

Фишка в том, что на .NET и Java можно писать много быстрее и качественнее и во многом благодаря вышеуказанным средствам, о которых ты ясное дело не слыхивал и ни видывал, а раз так, то и больше времени на mature optimization (ибо premature во всех ее проявлениях есть зло), тестирование и отладку.
Re[22]: Delphi 2009 vs C# 3.0
От: Utruk  
Дата: 05.11.08 21:30
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Utruk, Вы писали:


U>>Как всё плохо оказывается-то... данные находятся. Какие-нибудь данные


НС>Да нет, мусор там. Теперь осталось выяснить, что находится в шарповских массивах.


Да нет, нули там. Это видимо FastMM так старается. Но даже если добавить обнуление массива, то изменения скорости меньше чем статистическая погрешность.
Re[28]: Delphi 2009 vs C# 3.0
От: Utruk  
Дата: 05.11.08 21:49
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>Фишка в том, что на .NET и Java можно писать много быстрее и качественнее и во многом благодаря вышеуказанным средствам, о которых ты ясное дело не слыхивал и ни видывал, а раз так, то и больше времени на mature optimization (ибо premature во всех ее проявлениях есть зло), тестирование и отладку.


Да я и не спорю... но меня эти вопросы пока что не волнуют. Наверное как сяду за С# плотно, так сразу вопросы оптимизации начнут волновать придется искать средства чтобы высвободить время на "оптимизацию, тестирование и отладку".
Re[30]: Delphi 2009 vs C# 3.0
От: Utruk  
Дата: 05.11.08 22:06
Оценка:
Здравствуйте, kuj, Вы писали:

U>>Я до сих пор сравнивал C# и Delphi только в разрезе скорости. Про остальные моменты даже не заикался. Если вы не поняли, я не виноват. Читать внимательнее надо сообщения. Если бы вы сразу сказали: "Не, это не критерий, эдак мы быстро придем к выводу что Delphi лучше чем C#", то я бы счел вопрос закрытым и возможно перешел бы к другой теме.


kuj>Скорости чего? Сферического коня в банаховом пространстве? Самому еще не смешно?


Скорости работы кода написанного на сем языке. Я привел пример. Есть пара идей ещё сортировка вставками в дерево, шеллом и квиксорт... тоже интересно. Потом попробовать какую-нить математику.
Re[29]: Delphi 2009 vs C# 3.0
От: Utruk  
Дата: 05.11.08 22:23
Оценка:
Здравствуйте, Utruk, Вы писали:

U>Здравствуйте, kuj, Вы писали:


kuj>>Фишка в том, что на .NET и Java можно писать много быстрее и качественнее и во многом благодаря вышеуказанным средствам, о которых ты ясное дело не слыхивал и ни видывал, а раз так, то и больше времени на mature optimization (ибо premature во всех ее проявлениях есть зло), тестирование и отладку.


U>Да я и не спорю... но меня эти вопросы пока что не волнуют. Наверное как сяду за С# плотно, так сразу вопросы оптимизации начнут волновать придется искать средства чтобы высвободить время на "оптимизацию, тестирование и отладку".


Да... если у Вас нечего сказать существенного по скорости, то лучше не говорите вообще... отвлекает. Castle я займусь попозже, когда и если в нем возникнет потребность. По поводу какое дельфи гумно и как на ём плохо писать сетевые сервера тоже не надо, я уже всё понял 7000 соединений в сутки — это круто.
Re[26]: Delphi 2009 vs C# 3.0
От: Antikrot  
Дата: 05.11.08 22:24
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>Теоретически может работать быстрее, учитывая, что IL компилируется непосредственно на целевой платформе, что дает бОльший простор для оптимизации.


где-нибудь есть исходники jit компилятора .net? просто посмотреть как там практически
Re[23]: Delphi 2009 vs C# 3.0
От: Antikrot  
Дата: 05.11.08 22:35
Оценка: +1
Здравствуйте, Utruk, Вы писали:

U>Да нет, нули там. Это видимо FastMM так старается.

Да нет, мусор там. SetLength не инициализирует байты. Это видимо ОС так старается — зануляет память после выгрузки оттуда предыдущей программы...
Re[27]: Delphi 2009 vs C# 3.0
От: Mr.Cat  
Дата: 05.11.08 22:51
Оценка:
Здравствуйте, Antikrot, Вы писали:
A>где-нибудь есть исходники jit компилятора .net? просто посмотреть как там практически

mono?
Re[28]: Delphi 2009 vs C# 3.0
От: Antikrot  
Дата: 05.11.08 22:57
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

A>>где-нибудь есть исходники jit компилятора .net? просто посмотреть как там практически

MC>mono?

фигня. как компилятор работает я как-бы знаю...
но мы ж вроде сравниваем 2009-ый дельфи с M$-овской реализацией .net 3.0. вот в последнем мне интересен "оптимизатор под целевую платформу" — может кто притырил где?
Re[24]: Delphi 2009 vs C# 3.0
От: Utruk  
Дата: 06.11.08 01:44
Оценка:
Здравствуйте, Antikrot, Вы писали:

A>Здравствуйте, Utruk, Вы писали:


U>>Да нет, нули там. Это видимо FastMM так старается.

A>Да нет, мусор там. SetLength не инициализирует байты. Это видимо ОС так старается — зануляет память после выгрузки оттуда предыдущей программы...
Смотрел в отладчике. Но даже если мусор, то явное заполнение массива нулями на производительности практически никак не сказалось.
Re[27]: Delphi 2009 vs C# 3.0
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.11.08 05:12
Оценка:
Здравствуйте, Utruk, Вы писали:

U>Здравствуйте, gandjustas, Вы писали:


G>>Здравствуйте, Utruk, Вы писали:



G>>Говорилось про 7000-8000 подключений в сутки. то есть где-то одно подключение за 20 секунд. Такую нагрузку практически любая прога выдержит. В десятки раз большая нагрузка — менее секунды на запрос уже серьезная нагрузка. Если запросы обрабатываются достаточно медленно, то производительнось может упереться в количество тредов и открытых подключений.

U>Не понятно-же как оно распределено по суткам. Может все 7000 случаются в пределах получаса, а может размазано равномерно по суткам. Этого автор не написал... Если 7000 равномерно размазано по суткам и это говорится в контексте "посмотрите какой у нас производительный прожект на С#" то блин... ну тогда либо С# просто редкостное, либо автор к написанию сервера отношение имеет крайне посредственное. Потому что на том ксеоне с 80-тью тысячами соединений, сервер приложений написанный на Kylix+Indy+C++ совершенно никого не напрягал по скорости (это было примерно 250 рабочих станций). Сколько максимум одновременно активных соединений за всё время работы сервера я как-то не удосуживался посмотреть, но самое большое которое доводилось видеть было около 120. По потоку на клиента.
Что клиенты на сервере делали? Какова частота прихода запросов от клиентов? Каково время обработки одного запроса?
Re[13]: Delphi 2009 vs C# 3.0
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.11.08 06:17
Оценка:
Здравствуйте, Utruk, Вы писали:

U>Здравствуйте, gandjustas, Вы писали:


G>>Спасибо, поржал.


U>Ваш вариант в студию.


только что скачал Turbo Delphi

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

public class TestObject
{
    private const int ByteSize = 50;
    protected byte[] TestArray;
    public TestObject()
    {
        TestArray = new byte[ByteSize];
    }
}

class Program
{
    private const int ObjectCount = 1000;
    static void Main(string[] args)
    {
        var sw = new Stopwatch();
        sw.Start();

        for (int i = 0; i < 1000; i++)
        {
            var Objects = new List<object>(ObjectCount);
            while (Objects.Count < ObjectCount)
            {
                Objects.Add(new TestObject());
            }
        }
        sw.Stop();
        Console.WriteLine("C# Speed {0}", sw.ElapsedMilliseconds);
        Console.ReadLine();
    }
}



const
  ArraySize=50;
  ObjectCount=1000;

type
  TTestObject=class(TObject)
  private
    FTestArray:array of byte;
  public
    constructor Create;
  end;

{ TTestObject }

constructor TTestObject.Create;
begin
  inherited Create;
  SetLength(FTestArray, ArraySize);
end;

var
  Objects:TObjectList;
  Start, Stop:TDateTime;
  Speed:Integer;
  i:integer;
begin
  Start:=Now;

  for i := 1 to 1000 do
  begin
    Objects:=TObjectList.Create(TRUE);
    Objects.Capacity := ObjectCount;
    try
      while Objects.Count<ObjectCount do
        Objects.Add(TTestObject.Create);
    finally
      FreeAndNil(Objects);
    end;
  end;

  Stop:=Now;
  Speed:=MillisecondsBetween(Stop, Start);
  WriteLn('Delphi speed ', Speed);
  Readln;
end.


Результаты:
C# time 164
Delphi time 484

ЗЫ. При написании тестов запетил, что .NET тормозит при перераспределении больших блоков памяти. Поэтому большим спискам и StringBuilder с кучей текста лучше сразу выставлять capicity и не превышать её.
Re[16]: Delphi 2009 vs C# 3.0
От: Eugeny__ Украина  
Дата: 06.11.08 06:18
Оценка:
Здравствуйте, Utruk, Вы писали:


U>Многие "опечаточки" могут приводить в реальном коде к забавным багам. Например поставить ; после then в паскале.


Не шарю в паскале, что это будет?

U>Я уже не говорю о случаях когда в одной области видимости оказываются два идентификатора отличающиеся на одну букву.


В нормальной IDE это видно будет(при наведении на переменную все вхождения подсвечиваются). Ну, и вообще не припомню случая, чтобы переменные отличались на одну букву, кроме, разве что, индексаторов(i, j). Это как нужно называть, чтобы на одну букву? Хочу реального примера из жизни.

U>У вас не было случаев когда думаете об одном а пишете совсем другое? Хотелось бы все таки конструктивного подхода.


Наверное, я не из потомков Цезаря, я так не умею.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[17]: Delphi 2009 vs C# 3.0
От: Alexey Voytsehovich Украина  
Дата: 06.11.08 07:31
Оценка:
Здравствуйте, Eugeny__, Вы писали:

E__>Здравствуйте, Utruk, Вы писали:



U>>Многие "опечаточки" могут приводить в реальном коде к забавным багам. Например поставить ; после then в паскале.


E__>Не шарю в паскале, что это будет?


if 1=2 then;
  writeln('hihi');


hihi будет всегда
без ; никогда.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Я не умею быть злым, и не хочу быть добрым.
Re[17]: Delphi 2009 vs C# 3.0
От: Utruk  
Дата: 06.11.08 07:50
Оценка:
Здравствуйте, Eugeny__, Вы писали:

E__>В нормальной IDE это видно будет(при наведении на переменную все вхождения подсвечиваются).


Вы внимательно изучаете каждый раз что подсветилось а что нет?

E__>Ну, и вообще не припомню случая, чтобы переменные отличались на одну букву, кроме, разве что, индексаторов(i, j). Это как нужно называть, чтобы на одну букву? Хочу реального примера из жизни.


Page.Size и Pages.Size — что они будут обозначать сами додумаете или объяснить?

U>>У вас не было случаев когда думаете об одном а пишете совсем другое? Хотелось бы все таки конструктивного подхода.


E__>Наверное, я не из потомков Цезаря, я так не умею.


У вас наверное и ошибок в программах не бывает никогда. Завидую.
Re[17]: Delphi 2009 vs C# 3.0
От: Eugeny__ Украина  
Дата: 06.11.08 07:55
Оценка:
Здравствуйте, Utruk, Вы писали:


U>Естественно вместе с GC.Collect, потому как объектов много и память физическая нужна сейчас, а не когда-нибудь.


Вызов GC.Collect() совершенно не гарантирует, что запустится сборка мусора. Если памяти еще дофига, то зачем ее очищать?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[9]: Delphi 2009 vs C# 3.0
От: diatlov Молдова  
Дата: 06.11.08 08:14
Оценка:
Здравствуйте, Antikrot, Вы писали:

A>а положена она туда случайно не с помощью IE? а то он гад пишет в доп.потоки ntfs что прожка скачана


Скопировал по сетке с другого компа. Все в пределах офиса тестировалось.
Re[9]: Delphi 2009 vs C# 3.0
От: diatlov Молдова  
Дата: 06.11.08 08:16
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Ни с чем морочится не надо, если не лезть туда, куда не понимаешь.


Т.е. если я скопировал прогу на конечный компьютер и она нихрена не работает, то значит забить на это и сказать "переставляй винду дядя"?
Re[28]: Delphi 2009 vs C# 3.0
От: Utruk  
Дата: 06.11.08 08:34
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Что клиенты на сервере делали?


Размещали (фоновый процесс) или просматривали (интерактивное GUI приложение) изображения + некоторые метаданные.

G> Какова частота прихода запросов от клиентов?

G> Каково время обработки одного запроса?

Я честно говоря уже не очень хорошо помню конкретные цифры которые замерялись, но в среднем от одного клиента в зависимости от характера выполняемой задачи приходил один запрос с интервалом в 2..3 минуты. Каждый клиент работал примерно две смены из трех. Кроме того в систему равномерно влетало примерно 20..40 тысяч документов в сутки (1 документ — 1 запрос). Время обработки одного запроса от мгновенного (ну там сотни миллисекунд) до секунд 5 (когда они наваливались на сервер). Естественно приоритет работы пользователей был наивысшим, если чо фоновым процессам показывался кукишь и они отыгрывались на сервере по ночам, когда пользователей было мало.
Re[29]: Delphi 2009 vs C# 3.0
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.11.08 08:40
Оценка:
Здравствуйте, Utruk, Вы писали:

U>Я честно говоря уже не очень хорошо помню конкретные цифры которые замерялись, но в среднем от одного клиента в зависимости от характера выполняемой задачи приходил один запрос с интервалом в 2..3 минуты. Каждый клиент работал примерно две смены из трех. Кроме того в систему равномерно влетало примерно 20..40 тысяч документов в сутки (1 документ — 1 запрос). Время обработки одного запроса от мгновенного (ну там сотни миллисекунд) до секунд 5 (когда они наваливались на сервер). Естественно приоритет работы пользователей был наивысшим, если чо фоновым процессам показывался кукишь и они отыгрывались на сервере по ночам, когда пользователей было мало.

Вполне терпимая нагрузка на один неочень мощный сервак.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.