Большой Воронежский Форум
Страница 1 из 2
1 2 >
» Программирование>Скорость будущего.
LSL 17:36 14.07.2003
RomanPshenichny

C# в глаза не видел. Как он дружит с MMX/SSE?
Я бы написал свой тестовый пример и сравнил по скорости.
Только вот, что-то мне подсказывает что C/C++ будет побыстрее


Куда ему. Надо брать нормальные тесты, например, перемножение матриц,
а не вызовы функций. И смотреть как компилятор переведет код под SSE.
Imho, и не только мое, самый оптимизирующий компилер Intel C/C++ 7.0.
Только очееень медленно работает


Давайте проведём собственные тесты, по моему очень интересная тема

VC++ vs VB.NET vs VB6 vs C#

RomanPshenichny
Пиши тест (простой), чтобы можно было перевести на другие языки.
Только надо учитывать что ни какого ассемблера в .NET нет, а в VB6 и подавно.

Время засекать как timeGetTime Lib "winmm.dll" ?
Лучше чтобы программа считала ~ 10 мин. И засечь секундомером.
[Ответ]
RomanPshenichny 17:58 14.07.2003
LSL

> Пиши тест (простой), чтобы можно было перевести на
> другие языки. Только надо учитывать что ни какого
> ассемблера в .NET нет, а в VB6 и подавно.

Без ассемблера. Чистый язык (+ возможные расширения )
В C# и в VB6 есть 64 и 128-битные типы?
Т.е. MMX и SSE регистры вживую?

> Время засекать как timeGetTime Lib "winmm.dll" ?

Выше крыши хватит.
А еще можно в тиках считать.
[Ответ]
LSL 18:36 14.07.2003
RomanPshenichny 64 и 128-битные типы? есть в .NET , в VB6 нет.
Их можно отдельный тест без VB6.

Только не хитрить

И чтоб можно было перевести на другие языки.
[Ответ]
LSL 00:40 15.07.2003
Пару замечаний. Говоря си имею в виду седьмой без managed ext. конечно, и если тестить у меня, то проц мой Celeron 633, SSE2 нет. [Ответ]
RomanPshenichny 22:45 24.07.2003
Был занят.
Теперь более-менее свободен

Таки тест. Перемножение матриц. Матрицы выбираются случайным образом.

Чем больше MAX_MATRIX -- тем сильнее влияние на скорость кеша&памяти. ITERATION задает время исполнения теста.
[Ответ]
zic 12:59 25.07.2003
RomanPshenichny
Главный зачинщик - LSL смылся из города .Когда будет неизвестно .
А я и так знаю . что быстрее .
Да и на VB или VB.NEt перекинуть не смогу в любом случаее.
[Ответ]
RomanPshenichny 15:04 25.07.2003
Ну, как только -- так сразу. [Ответ]
RomanPshenichny 08:22 01.08.2003
LSL
Ты приехал? [Ответ]
LSL 17:46 03.08.2003
Половину перевёл, половину не можу.
Многоуважаемые Сишники, объясните другу Вэбэшнику что значат ваши:

template и operator, см. код.

На пальцах объясните, или на паскале хотя бы.

RomanPshenichny
Я очень редко сейчас в интернете...

Кстати в .NET есть класс Matrix который содержит разнообразные
методы для манипуляций над матрицами.
[Ответ]
RomanPshenichny 18:22 03.08.2003
LSL

В Паскале этого нет
Почитай лучше книжки по C++.

template <typename T> T Random ( T max )
Возвращает случайное число, от 0 и до max.

inline float * operator [] ( int idx ) const
Операция доступа к элементам матрицы.

Так какая скорость?
Кто быстрее?
[Ответ]
LSL 11:44 05.08.2003
С .NET я так и не разобрался, поглядите код, где собака порыта ?
Наверное, Matrix нужно структурой а не классом делать...

И того:
VC++7 ~ 1.6

VB.NET(C#) ~ 22
Что-то не так, и это ясно видно.

VB6 ~ 3.4
Вполне реальная скорость для VB6. [Ответ]
RomanPshenichny 12:03 05.08.2003
LSL

Что-то с VB.NET не то...

Ты все в Release собирал, с отключенной нафиг Debug и с оптимизацией под максимальную скорость? [Ответ]
zic 12:29 05.08.2003
А вто что получилось у меня с вашими тестами
VB7 = 1,953
VB6 = 2,359
CPP = 1,531
Субьективно также .

( бинарники от LSL поскольку VB.NET а тем более VB6 у меня не стоит ) [Ответ]
is 01:12 08.08.2003
RomanPshenichny Какие опции компайлера стоят в проекте (я его не скачивал)? Чего-то у плюсов отрыв мелковат [Ответ]
LSL 00:50 01.09.2003
Я вернулся. [Ответ]
LSL 00:33 06.09.2003
Что-то с VB.NET не то...

Ты все в Release собирал, с отключенной нафиг Debug и с оптимизацией под максимальную скорость?

Да, Release.

Что же за хрень ? У zic'а нормально а у меня нет.
В чём же секрет может быть... знаю только что у него
framework 1.1 а у меня 1.0(под него и компилировал)

NeoExpert протестируй ты, у тебя тоже 1.0 стоит...

---
ps:
Матрица у меня класс а не структура как на си, это тоже должно давать тормоз..позже попробую сделать как структуру.

И как я уже говорил в net есть уже класс Matrix, он наверняка оптимизирован под задачу....и наверно быстрее работает чем в си.

LSL добавил [date]1062797874[/date]:
---
И о пригодности для написания игр.

Мне кажется 10% потери производительности с головой окупятся огромными преимуществами .NET, интересно что ещё
может помешать платформе стать инструментом игродела ?? [Ответ]
zic 00:52 06.09.2003
Что же за хрень ? У zic'а нормально а у меня нет.
В чём же секрет может быть... знаю только что у него
framework 1.1 а у меня 1.0(под него и компилировал)

У меня и то и другое .
Framework 1.1 стоял давно ,а 1.0 вместе с VS NET 7 появился .

zic добавил [date]1062798873[/date]:
интересно что ещё
может помешать платформе стать инструментом игродела ??

Глючность . [Ответ]
LSL 00:58 06.09.2003
Глючность.
Но её нет в отличии от её большей вероятности в C++ !
Или есть убедительный пример ? [Ответ]
zic 01:14 06.09.2003
Dashboard
Janus ( RSDN offline client)
С#DevelopmentEditor
Дальше ?

Просто забил с экспериментами .
На самом деле у NEt есть нектоорые приимущества перед другими вещами , но не там где ты думаешь .
Это в первую очередь разработка инструментов администрирования и управления .
Очень удобно взаимодействовать с ActiveDirectory
Встроенные средства работы с WMI и прочее . [Ответ]
LSL 01:24 06.09.2003
zic ну незнаю, незнаю....
Я тоже могу перечислеть ряд программ которые работают прекрасно... но лучше воздержусь. Будем тестировать. [Ответ]
LSL 13:43 06.09.2003
Я тестирую ещё раз:
Моя система:
.NET Framework 1.0, WinXP Pro
Celeron 633, RAM 256, i815.

---------------------------
Visual C++7 ~1.5
Visual Basic 6 ~3.0
Visual Basic .NET ~21.3 (!)
---------------------------
(код в vb.net не идеальный)

Что то мы напутали...
NeoExpert, протестируй ещё, там три exe-файла. [Ответ]
LSL 17:36 06.09.2003
Torvic
VB по моему не умеет делать консольных приложений.
VB умеет делать консольные приложения.

А я на асме сделаю аналогичный тест. Скоро выложу.
Да..транслируй с Сишного примера...перемноржение матриц.

Ну вы и намудрили. Уж если делать тест, то аналогичные файлы делайте. В С у вас консольное приложение(хоть и включили windows.h). Значит РЕ другое. Не задумывались?

Нет разницы. Я выходные данные хоть графиком выдам, абы матрицы быстро перемножались. [Ответ]
LSL 15:36 08.09.2003
NeoExpert ВааУ ! [Ответ]
LSL 17:17 08.09.2003
Внимание я модернизировал код, и теперь тест на vb7 использует структуры. У меня производительность увеличилась в два раза.

Жду результатов от zic'a и эксперта..и других. [Ответ]
RomanPshenichny 20:58 08.09.2003
> Тем более что консольному приложению выделяется очень
> мало памяти, совершенно не выделяется виртуальной
> памяти, приоритет наиболее низкий, и это не говоря о РЕ...

Кто тебе рассказал такие страшные сказки? [Ответ]
LSL 22:27 08.09.2003
NeoExpert
LSL "ВааУ" что это значит ???
Это значит что тест на Бейсике обошел по скорости тест на Си++ ! Наконец-то это свершилось ((((((((: сколько лет...

А вот testVB7M (struct) опять выкинул фокус...

На будущее, прошу делать, чтоб консоль VC не закрывалась после выполнения
А вот это уже к Роману Пшеничному, его код

Torvic
Я валяюсь


ps:
Не воспринимайте близко к сердцу мои слова...
[Ответ]
zic 01:43 09.09.2003
vb6=2.617
vb7=10 ??!!! ХЗ
cpp=1.719

Комп подгружен одной виртуальной машиной
[Ответ]
LSL 15:51 09.09.2003
Ещё раз кладу архив с тестами (new_tests.zip) что бы небыло путанницы:
Тестируется четыре решения на трёх языках.

Пока результат по тестам Эксперта таков:

VC7 - 1.0
VB7 - 0.98 (VB7M - 6.2)
VB6 - 1.4


Предлагаю протестировать ещё, не забудьте поубивать все фоновые задачи. [Ответ]
LSL 19:39 11.09.2003
NeoExpert
Для начала надо сделать практически одинаковый код на Си и на Бейсике, а потом сравнивать.

Дык код и есть одинаковый, иначе и смысла не было ! [Ответ]
LSL 23:49 19.09.2003

Но иногда вам не нужна вся эта гибкость. Иногда вы хотите использовать что-то настолько же простое, как структура, и не хотите лишних затрат производительности. CLR предоставляет возможность определить то, что называется типом значения, и интерпретируется во время компилирования как структура. Типы значений управляются стеком и предоставляют вам скорость структуры. Как и ожидалось, они также имеют ограниченную гибкость (например, у них нет наследования). Но в экземплярах, в которых вам нужно использовать структуру, типы значений обеспечивают невероятное повышение скорости.

Типы значений полезны только тогда, когда вы используете их как структуры. Если надо интерпретировать тип значений как объект, среда выполнения обработает для вас упаковку и распаковку объекта. Однако это требует даже больших затрат, чем создание его сразу как объекта!


Вот это как раз и обьясняет медлительность моего теста со структурами.
Это значит что тест с классами который по скорости на уровне Си++ будет легко побеждён тестом со структурой value type !

Basic быстрее Си++ [Ответ]
Страница 1 из 2
1 2 >
Вверх