Delphi консультации (бесплатно)

  • Автор теми Автор теми crghome
  • Дата створення Дата створення
Вобщем, что натестировал я (core i3):

c - 2153
с sharp - 1026
delphi 7 - 1992
delphi xe - 2012

Все скомпилено с дефолтными настройками.
 
Вот это вот - не аргумент. К этим цифрам прибавляйте 47 Мб .Net фреймворка

а почему только 47 МБ? Если так рассуждать то почему бы не добавлять весь объем папки WINDOWS? :D
Дотнет фреймворк начиная с Vista является частью ОС, а для той-же XP сложно найти машину без фреймворка. Например если видеокарта ATI, то фреймворк уже установлен вместе с дровами видяхи. Поэтому я не вижу оснований прибавлять объем файлов ОС к исполняемому файлу.
 
Вот похоронят ХР - тогда и не будут добавлять =)
Хотя не, по привычке все равно будут.
 
Вобщем, что натестировал я (core i3):

c - 2153
с sharp - 1026
delphi 7 - 1992
delphi xe - 2012

Все скомпилено с дефолтными настройками.

спасибо, вот теперь и можно сделать выводы о "медлительности" C#. Подумать только, такой медленный но как оказалось в 2 раза быстрей чем Delphi :D
 
спасибо, вот теперь и можно сделать выводы о "медлительности" C#. Подумать только, такой медленный но как оказалось в 2 раза быстрей чем Delphi :D
Интересно, а какое этому обоснование?;)
 
Интересно, а какое этому обоснование?;)

Обоснование - у C# намного более мощная оптимизация при компиляции в машинный код JIT'ом.

Не, ну я конечно выбрал задачу в которой преимущество на стороне C#, не без этого. :rolleyes: Чтобы более красочно подчеркнуть глупость утверждения что C# медленный.
Есть задачи в которых C# все-же медленее чем си (за счет дополнительного контроля на ошибки в runtime), в основном это обработка больших массивов данных. В таких случаях удобно вынести код в модуль написанный на си.
 
Интересно, какие результаты покажет Java? Аж проверить захотелось.
 
а почему только 47 МБ? Если так рассуждать то почему бы не добавлять весь объем папки WINDOWS? :D
Дотнет фреймворк начиная с Vista является частью ОС, а для той-же XP сложно найти машину без фреймворка. Например если видеокарта ATI, то фреймворк уже установлен вместе с дровами видяхи. Поэтому я не вижу оснований прибавлять объем файлов ОС к исполняемому файлу.

А чего Вы на WINDOWS- то зациклились?
А как же Mac OS?
Андроид, который будет поддерживаться в XE3?
 
А чего Вы на WINDOWS- то зациклились?
А как же Mac OS?
Андроид, который будет поддерживаться в XE3?

насчет MacOS не скажу. А на андроиде приложения на C# уже сейчас работают быстрей чем на родной Java :клас::D
 
Код:
public class Test {

    private static void Foo() {
        
    }
    public static void main(String[] args) {
        long t1 = System.currentTimeMillis();
        int i, j;
        for (i = 0; i < 100; i++)
                for (j = 0; j < 10000000; j++)
                    Foo();
        long t2 = System.currentTimeMillis();
        System.out.print(t2 - t1 + " [ms]");
    }
}

675 ms. Вот этого я не ожидал.
 
насчет MacOS не скажу. А на андроиде приложения на C# работают быстрей чем на родной Java :клас::D
Правда в андроиде дотнетные либы не входят в состав системы и поэтому к приложению порядка 5-10 МБ добавляется :(

Вот. Кроссплатформенный деплоймент уже проигрывает...
Кстати, о либах... Мы оба имеем ввиду Моно?
 
В чем? В 5-10 метрах?

Ну, тогда давайте не будем приводить в качестве аргумента вес бинарника Delphi, куда обычно все спорящие суют отладочную информацию, потому, что Debug конфигурация стоит по-умолчанию.

А вот развертывание Моно теоретически может стать проблемой. Все же это не совсем .Net....
 

похоже на то что Java просто выкидывает весь цикл, а это не честно :D

попробуй такой вариант:
Код:
private static int s_value=0;

private static void Foo() {
   s_value++;
}

на C# такой код будет в 1.5 раза быстрей чем на си.
 
похоже на то что Java просто выкидывает весь цикл, а это не честно :D

да типо того :)

попробуй такой вариант:

Код:
public class Test {

	private static int value=0;

	private static void Foo() {
		value++;
	}
	
	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		for (int i = 0; i < 100; i++) {
			for (int j = 0; j < 10000000; j++) {
				Test.Foo();
			}
		}
		System.out.print((System.currentTimeMillis() - start) + " [ms]");
	}

}

получилось
 
Маловато, понимаешь ;)
У меня на i3 675 ms. что-то не так? или i5 настолько круче i3? %)
P.S. А как это выкидывает?

Код:
public class Test {

    private static void Foo() {
        
    }
    public static void main(String[] args) {
        long t1 = System.currentTimeMillis();
        int i, j;
        for (i = 0; i < 100; i++)
                for (j = 0; j < 10000000; j++)
                    Foo();
        long t2 = System.currentTimeMillis();
        System.out.print(t2 - t1 + " [ms]");
    }
}

В моем коде цикла не будет, т.к. эта падла хитрая и считает, что нефиг молотить пустую ф-ю?
 
на C# такой код будет в 1.5 раза быстрей чем на си.

Это говорит только о том, что фреймворк написан грамотно (в чем, как раз я и не сомневался, по понятным причинам).
Но тут возникает сразу 2 вопроса.
А насколько он гибкий? Способен-ли он с такой же эллегантностью решить любую задачу?

И второй вопрос. А как, собственно, быть с кроссплатформенностью. Моно. это хорошо. Но это не родное. И к тому же бесплатное, со всеми минусами бесплатности.
 
Пример высосаный из пальца
Тут уже надо смотреть скомпиленное
Вполне возможно, что крутой оптимизатор вообще цикл не будет юзать
Сорри более конкретно задачу расписывать просто не могу
Для меня вопрос не в скорости обработки, а в отзывчевости - по должно быть вызвано и должно отработать немалый кусок в четко определенное время
В случае delphi или с этотгораздо более вероятно чем в случае управляемого языка.
Хотя в качестве эксперимента я уже запланировал переписать эту часть на шарпе и посмотреть, как пойдет.
Если в момент вызова фреймворк захочет скомпилить свежевызванный класс/почистить память будет бобо. Это главное
Имея ввиду скорость мы просто с Klez подразумеваем разные вещи
Еще одна фишка - чтение запись бинарных файлов
В с и delphi можно юзать структуры/записи и читать напрямую в них, очень просто и быстро. В шарпе такого же простого способа я не нашел.
 
Останнє редагування:
Назад
Зверху Знизу