Здравствуйте, adontz, Вы писали:
A>На самом деле ридея гениальная, а вот реализация того. Когда будет хорошо сам с удовольствие перейду, а пока рано — капризный я
Ну так пиши в форум по Янусу чего не хватает для полного счастья . Глядишь, появится .
Здравствуйте, VladD2, Вы писали:
VD>Парадокс? Мне кажется — закономерность. 10% в большинстве задачь ничего не рашают. Особенно при пакетной обработке.
В пакетной обработке сократить время с 50 часов до 50 минут — это хороший результат. С 72 до 48 часов в принципе не плохо, но не принципиально.
VD>Да, какой? И вообще если в мерседесе нельзя перевезти три тонны кирпича, то какой в нем смысл?
Мерс — это... понимаетет ли... presentation layer, какой ещё кирпич?
VD>Ты сколько лет то сам на С++ работаешь? Вот мы с IT более 10. Вот мы с удовольствием плюнули на С++ и перешли на дотнет. Так что втирай очки в другом месте.
Не ври пожалуйста. Ты ещё долго сопротивлялся и доказывал что COM (особенно +) рулит немеряно
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, AVM, Вы писали:
AVM>>я не про компактность кода говорю, а про компактность программа+среда(в которой программа выполняется)
AVK>Ну не думаю что всякие msvcrt такие уж крохотные.
Здравствуйте, mikа, Вы писали:
M>Будут-будут. Тут народ говорил, что и серверные приложения на НЕТе не пишутся. Но когда им мягко объяснили, что пора просыпаться после пятилетней спячки и показали реальные примеры, как-то затихли сразу
Агащазблин.
Тетрис может на Нете и напишут, а 3Д шутер (если не считать того Владовского квейка у которого нетовским было только окошко messages) фигушки.
Игра критична и по скорости выполнения (и тут не то что 20-30, тут 5% важны) и по объёму расходуемой памяти.
Стратегии типа Heroes of Might and Magic может ещё и напишут, а симуляторы уже врядли.
Так что с играми вы торопитесь
Здравствуйте, adontz, Вы писали:
A>А тут доказывать нефига. Просто возьми массив из 1000000 элементов и заполни из сперва числами от 1 до 1000000б а потом со 2го по 999999 средним арифметическим двух соседних. Будет тебе подобие простого эффекта размывания в 2Д. Я например этот тест делал и разница вышла почти 20%. Не хило я бы сказал. VC7.1 .Net Framework 1.1
Я тоже сделал.
C++ — 8.234
C# — 6.29
Вот код, можешь мне сказать где у меня лыжи не едут?
Кстати, пришлось сделать сдвиг, вместо деления на 2, т.к. в этом случае C++ не смог видимо чего-то там соптимизировать и выдал результат в 12.203
C++
#include"stdafx.h"#include"windows.h"const int arr_size = 1000000;
static void Test()
{
int *arr = new int[arr_size];
SYSTEMTIME tb;
GetSystemTime(&tb);
for (int n = 0; n < 500; n++)
{
for (int i = 0; i < arr_size; i++)
arr[i] = i;
for (int i = 1; i < arr_size - 1; i++)
arr[i] = (arr[i-1] + arr[i+1]) >> 1;
}
SYSTEMTIME te;
GetSystemTime(&te);
std::cout
<<
(te.wMinute - tb.wMinute) * 60 +
te.wSecond - tb.wSecond +
(te.wMilliseconds - tb.wMilliseconds) / 1000.
<<
std::endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
Test();
return 0;
}
C#
using System;
namespace CSTest
{
class Class1
{
const int arr_size = 1000000;
static void Test()
{
int[] arr = new int[arr_size];
DateTime dt = DateTime.Now;
for (int n = 0; n < 500; n++)
{
for (int i = 0; i < arr_size; i++)
arr[i] = i;
for (int i = 1; i < arr_size - 1; i++)
arr[i] = (arr[i-1] + arr[i+1]) >> 1;
}
Console.WriteLine(DateTime.Now - dt);
}
[STAThread]
static void Main(string[] args)
{
Test();
}
}
}
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, naje, Вы писали:
VD>>>Ну, а насчет Pi процессор загружает?
N>>интересно, а причём тут это, OpenGL драйвера разве на видеокарте выполняются?
VD>OpenGL при рассчете Пи? Ну, ты крут!
Про Пи просто цитату не удалил, извените, можно было бы и догадатся раз ты такой умный.
Здравствуйте, IT, Вы писали:
IT>Я тоже сделал.
IT>C++ — 8.234 IT>C# — 6.29
IT>Вот код, можешь мне сказать где у меня лыжи не едут?
Да ты чё Игорь? Моей тачке конечно до твоей далеко но!
С++ — 22.7 сек
C# — 24.3 сек
Но что б поменялись местами? Запускал релизы с включённой оптимизацией. Ты студию и прочие программы выключил? А то слушая ВинАмп не тестируют А я запустил по 3 раза именно то, что ты дал. Только С# код подправил, чтоб он время так же показывал
DateTime dt1 = DateTime.Now;
for (int n = 0; n < 500; n++)
{
for (int i = 0; i < arr_size; i++)
arr[i] = i;
for (int i = 1; i < arr_size - 1; i++)
arr[i] = (arr[i-1] + arr[i+1]) >> 1;
}
DateTime dt2 = DateTime.Now;
Console.WriteLine((dt2.Minute - dt1.Minute)*60 + (dt2.Second - dt1.Second) + (dt2.Millisecond - dt1.Millisecond)/1000.0);
Результат стабильный, разброс 0.1 сек. Итого 10% разницы на простейшей задаче где и оптимизировать то нечего и так всё просто. Сомеваюсь я чтоб фреймворк эту задачу догадался под SSE загнать. Тем более что если догадался то почему у тебя загнал, а у меня нет? Явно у тебя ошибка в методике тестирования. Поотключай всё и выйди из инета. Я запускал из сонсоли, то есть открыл CMD.exe и уже оттуда запускал. Больше окошек открыто не было.
Что касаеться Си++ кода. Стыдись!
#include"stdafx.h"#include"windows.h"const int arr_size = 1000000;
static void Test()
{
int *arr = new int[arr_size];
SYSTEMTIME tb;
GetSystemTime(&tb);
for (int n = 0; n < 500; n++)
{
for (int i = 0; i < arr_size; i++)
arr[i] = i;
for (int i = 1; i < arr_size - 1; i++)
arr[i] = (arr[i-1] + arr[i+1]) >> 1;
}
SYSTEMTIME te;
GetSystemTime(&te);
std::cout
<<
(te.wMinute - tb.wMinute) * 60 +
te.wSecond - tb.wSecond +
(te.wMilliseconds - tb.wMilliseconds) / 1000.
<<
std::endl;
delete[] arr;
}
int _tmain(int argc, _TCHAR* argv[])
{
Test();
return 0;
}
Тоже мне, привык к GC Здесь каждый за сам убирает свой мусор!!!
15.469
15.5
15.547
17.828 // тут таки решил приостановить WinAmp. ;)
15.516
15.515
15.437 // тут вспомнил, что у С++ есть еще такое понятие как Release. :)) Сделал и его
Честно говоря, тесты практически идентичные. Давай еще тесты для сравнения (только прям код).
Здравствуйте, mikа, Вы писали:
M>.NET вбирает в себя кучу таких вот разношерстных библиотек. .NET делает для них единый стандарт. Ты видно большие проекты не писал, что так легко утверждаешь, что, мол, я вот то использовать могу, а для этого — се.
На C# или МС++ — нет, не писал. Большие. И наверно уже не буду. А что такое кстати — большой проект ?
Вот вы, mika, уже сделали свой первый большой проект на .Net ? Который не крутится у вас под рукой, обеспечивая ваш девелопт энваремент, например, а поставляется реальному заказчику ?
У меня есть комплекс из трех основных систем. Первая регистрирует данные, показывает их оператору,тарирует и пишет файлы истории. Вторая подситсема делает им матобработку — сглаживание, тренды, фильтрацию и прочие прелести; и готовит макеты оформления. Третья система загоняет файлы в БД, и потом с этой БД работает — карты строит, статистику кажет, выборки формирует для корпоративной БД. Каждая система имеет модульную структуру, и состоит из нескольких приложений, которые взаимодействуют через пайпы (если речь идет о оперативной передаче данных) или через файлы (если речь идет о графах обработки). Это достаточно большой для вас проект или нет ?
Естествено, я его делал и делаю не один. Но так уж сложилось, что веду его я; особенно нагружают вопросы взаимодействия модулей, но это решаемо.
Так вот, все сделано на С++ — большая часть на VC6, простые интерфейсные программы на Бильдере, самые старые — на BC++ 5.0. Для работы с данными используются классы STL и частично boost; в алгоритмах обработки тот же STL, boost и свои библиотеки, которых за последние 7 лет скопилось немало. Интерфейс — большая часть контролов переделана из MFC, или взяты готовые библиотеки. БД — ODBC в чистом виде, больше ничего так и не пригодилось. Библиотеки, где сложена вся арифметика, компилятся Intel C++ 5.5 ( 6-й есть, но пиратский, так что считаем, что он не используется).
Есественно , когда появился дотнет, первой реакцией было отторжение. Вполне понятно. Потом — как все здорово. Те преимущества, про которые вы говорите, достаточно очевидны и бросаются в глаза; кроме того, очень просто работать с COM и БД; большое количество готовых к употреблению компонент; GDI+ — красивая штучка, тоже много нового и готового, наконец-то стейтлост модель рисования.
Соблазн — хотя бы часть сделать на дотнет, особенно то, где уже накопилось много нужных изменений; настолько, что имеет смысл приложение переработать капитально.
И что ? Потери квантов, потому что система занимается чертечем три секунды. Мусор убирает. Или тряпочкой чего-то полирует.
Раздражение интерпретаторов, потому что приходится ждать там, где раньше ждать не приходилось.GDI+ — вообще редкостный тормоз, особенно когда дело доходит до большого количества полилайнов и отрисовки без мерцания.
Не справляется старый Celeron 1200 ? Не беда, купим P4 2.8 HTT. И заказчику посоветуем.
Купили, все равно тормозит.
Спрашивается, нах это надо ? Идем дальше, смотрим на это большое количество готовых унифицированных библиотек. Во-первых, как вами было справедливо отмечено,mika, они преимущественно предназначены для написания текстовых редакторов и мордочек запросов к БД. Как не старайтесь, но из набора запчастей для трактора не соберешь истребитель — только после продолжительной обработки напильником. Во-вторых,библиотеки от MS никогда не отличались качеством и скоростью, и в этом случае традиция свято соблюдается. JIT-компилятор может здорово оптимизировать вычисления, поскольку работает с конкретным процессором — но он этого не делает. Почему — хбз; те небогатые опции оптимизации, которые я нашел, я выставил.
Многострадальный DataGrid — вообще полное убожество. Столько плясок вокруг старого избитого грида, и такой плачевный результат.
M>Геннадий Васильев (соседний тред) как-то утвердал, что он лучше все сам напишет. И отчасти был прав. Для меня тоже порою лучше самому написать что-то несложное. НО. Сколько это он будет писать на С++ и сколько я на Шарпе. Готов биться об заклад, что скорость будет отличаться в разы.
Скорость разработки, mika, это не все. Вы меня простите, но это дешевка. Быстро написанные программы, выброшенные на рынок, которые требуют потом постоянных патчей — это дешевка. Можно взять секретаршу и обучить ее работать на дотнете — это достаточно просто; и получать программы того же качества, которые сейчас лепят бывшие С++ программисты, с теми же трудозатратами, и гораздо дешевле, кстати.
M>Тут как бы такой расклад. Те люди, которые работают с НЕТ порядочное количество времени, уже все для себя уеснили. Но те люди, которые его даже в глаза не видели, пытаються различными способами доказать, что первые поняли не правильно.
M>Как ты думаешь, это логично?
Нет конечно. Совершенно правильно замечено, что для каждой задачи — свои средства разработки. Все, что я хотел сказать — что дотнет плохо подходит, или не подходит вовсе для достаточно широкого класса задач. Не могу сказать, что работаю с дотнетом порядочное количество времени, но год уже за ним слежу достаточно пристально. Использовать его для работы даже не пытаюсь, но экспериментирую постоянно. И реального применения ему пока не вижу.
NN>>>>А вообще-то, раньше выхода .Net Framework v2.0 SP3 делать на нем коробочные программы глупо.
M>>>Ты точно уверен, что понимаешь, что такое .NET? NN>>Думаю да. Фреймворк, фреймворк и опять фреймворк. И куча шуршащей блестящей шелухи сверху, которая маркетинг.
M>Я так и думал. Винда масдай, линух рулит.
А вот это уже я не понял. Про линух не говорил ни полслова. Mika, уж будьте любезны, поясните пожалуста. не оставьте прозябать в темноте невежества — что еще такое дотнет, кроме фреймворка ???
Интуитивно понятный интерфейс — это интерфейс, для работы с которым нужна недюжинная интуиция...
Здравствуйте, oRover, Вы писали:
R>Здравствуйте, Nick Notabene, Вы писали: NN>>2oRover — SOAP — это как-то связано с мылом ??? )
R>с мылом? Я про мыло где-то что-то говорил?
Это была неудачная шутка. Что такое SOAP и XML я себе примерно представляю. Гыгы.
NN>>А если серьезно — траффик действительно растет на 10-15%. Я не разбирался подробно. Но SOAP я не использую.
R>а что он так слабо растет? Я думал, больше будет расти. Никто не обещал, что это будет более компактный способ передачи. Сам подумай, что меньше по объему — бинарные или текстовые данные.
Еще раз говорю — Я НЕ ИСПОЛЬЗОВАЛ SOAP. Смысла нету. Бинарные данные. 10-15% оверхеда, как тут кто-то красиво выразился.
R>ну если 2 приложения кривые то это вполне может означать, что писали их кривыми руками, а не то, что среда, на которой они написаны, кривая...
Видите ли, я совершенно согласен с идеей о том, что язык формирует мышление.А программма, как не крути, продукт мысли, а не ручек. И если она кривая, то именно из-за способа мышления, сформированного в данном случае языком программирования. Не стоит забывать, что у реальных машин есть такая вешь, как память — чревато.
А в общем-то все. Хватит на эту гнилую тему. Надо же. опять повелся.
Интуитивно понятный интерфейс — это интерфейс, для работы с которым нужна недюжинная интуиция...
Здравствуйте, VladD2, Вы писали:
VD>Разговор между Интелом и МС уже был. Но результат пока неопределен. В МСИЛ-е похоже есть какие-то фичи не пригодные для аппоратной реализации.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Nick Notabene, Вы писали:
... skpped .....
VD>Парадокс? Мне кажется — закономерность. 10% в большинстве задачь ничего не рашают. Особенно при пакетной обработке.
Решают. Вам просто пользователи попадались такие сильно лояльные. Или просто оффисные работники, которым на время пол
ожить — у них не горит, они на ставке сидят.
Вообще-то все мои аргументы привел уже adontz. Совершенно с ним согласен, и не буду ничего дублировать.
VD>Ты сколько лет то сам на С++ работаешь? Вот мы с IT более 10. Вот мы с удовольствием плюнули на С++ и перешли на дотнет. Так что втирай очки в другом месте.
Я работаю с С++ 8 лет. Каждый день, а раньше и большую часть ночей.
VD>Какая там к чертям безопастьность? Вся Локи и добрая половина Буста — это затычки призванные хоть как-то заткнуть дыры плюсов. В дотнете они ненужны так как есть шататные средства решения проблем.
Влад, вы правда работали с boost ?
NN>>Нет, тот же. И время вычисления будет одинаково никаким — это константное выражение. NN>> А вот a = 1.123 b = 3.321; c = a/b; даст одинаковый результат, но за разное время.
VD>Ты бы хоть попробовал. А то млишь чтерти что.
в общем-то adontz тоже все написал Хорошая статья, не спорю
Я кстати для арифметики использую intel C++ 5.5, и ни разу об этом не пожалел.
VD>И кто заставляет? Рухлить можно купить за 100 баксов. ОСи вроде ДОС, Вин95 или ранних версий Линукса на их пойдут влет. Можно даже старый СКО запустить. Но что-то желающий мало. Видимо совсем офигели от маркетинга.
NN>>Для сравнения — попробуйте посчитать двумерное преобразование Фурье для достаточно большой матрицы, например 10 000 х 10 000 double значений с использованием С# и Intel C++ v.6. А это достаточно простой тест, и нифига не синтетический, и в реальной жизни встречается часто, причем в разных областях обработки. Тут вам и работа с достаточно большим блоком памяти.
VD>Чем трепаться взял бы да сделал тест. Хот какие-то аргументы появились бы.
VD>А ты TCP испоьльзуй. Трафик будет байт в байт. Или тоже есть сверхестественные силы увеличивающие рамер передаваемых байтов?
sendv recv — их и использую. Без проблем.
VD>А кто ее делает? Тут пока что я вижу попытки навесить ярлыки. Причем без всяких аргументов и фактов. Про то что дотнет — это панациея сказал пока что только ты.
Про это mika сказал. В ветке " Где место .Net".
VD>Бред сивой кобылы. Почему именно 2.0? И что такое SP3? В дотрете вообще нет SP.
Будут. Всенепременно будут. Это как пить дать :- )))
NN>>Как показывает практика У меня перед глазами лежит два дотнет прилолжения — одно кривее другого, и за оба хотят деньги. Гыгы.
VD>Ну, так напиши вместо них свое на С++, а деньги оставь себе. Хоть денег заработаешь. А так за бесплато людей от дел отрываешь.
А ты не читай, время сэкономишь. К тому же этот твой ответ нельзя назвать информативным.
.
Интуитивно понятный интерфейс — это интерфейс, для работы с которым нужна недюжинная интуиция...
Здравствуйте, mikа, Вы писали:
Гы гы.
Ну раз пошла такая пьянка...
Все приложения выгружены. Отключены нах сервисы alerter, messenger, perfomance logs and alerts, VS analyzer
Fast User Switching оставлен по причине наличия только одного пользователя.
explorer закрыт, все выполняется под cmd.exe, вызванном из Task Managera, который тоже закрыт
Intel C++ 6.0 (Release, Default Optimization)
17.115
17.115
17.124
С# .Net Framework 1.1
19.525
19.810
19.812
P4 2.4 C HTT WinXP Pro MP SP1
C++
6.311
6.308
6.314
Intel C++ 6.0
5.403
5.380
5.410
С# .Net Framework 1.1
6.515
6.830
6.610
Только надо ли говорить, что тест этот излишне прост?
Переписать на С# обработку полей, что ли ? Да еще дописать эту генерилку полей ( я не буду диалапом выливать 700 Мб
Думаю, нах это все не надо. Все равно каждый при своем мнении останется, и при своих задачах
Интуитивно понятный интерфейс — это интерфейс, для работы с которым нужна недюжинная интуиция...
Здравствуйте, IT, Вы писали:
IT>#include "stdafx.h" IT>#include "windows.h"
IT>const int arr_size = 1000000;
IT>static void Test() IT>{ IT> int *arr = new int[arr_size];
IT> SYSTEMTIME tb; IT> GetSystemTime(&tb);
IT> for (int n = 0; n < 500; n++) IT> { IT> for (int i = 0; i < arr_size; i++) IT> arr[i] = i;
IT> for (int i = 1; i < arr_size — 1; i++) IT> arr[i] = (arr[i-1] + arr[i+1]) >> 1; IT> }
IT> SYSTEMTIME te; IT> GetSystemTime(&te);
IT> std::cout IT> << IT> (te.wMinute — tb.wMinute) * 60 + IT> te.wSecond — tb.wSecond + IT> (te.wMilliseconds — tb.wMilliseconds) / 1000. IT> << IT> std::endl; IT>}
IT>int _tmain(int argc, _TCHAR* argv[]) IT>{ IT> Test();
IT> return 0; IT>}
Хочу заметить, что тут не совсем правильно использовать GetSystemTime, поскольку эта функция срабатывает с разной скоростью. Проще и точнее имхо GetTickCount().
Да, а где delete[] arr ?
И операций с плавающей точкой тут нет и в помине, а речь шла преимущественно о них.
I
Интуитивно понятный интерфейс — это интерфейс, для работы с которым нужна недюжинная интуиция...