Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему .NET ? 
V
    Опции темы
Пончик
Дата 17.7.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 21.6.2009

Репутация: нет
Всего: нет



Всем ку-ку =)

Звиняюсь за демагогию... но о.О ну какбы... захотелось мне учить тот язык за какой платят деньги... (а то так и паскаль учить можно  smile ) зашёл на сайт нашего города... и начал искать вакансии... практически каждая вакансия отмечалась текстом ".NET" . Если чесно мне мелкософт не очень.. ну может из-за привычки... короче взял я книгу и начал осваиватся. Ну прочитал страниц 200-300. И мне захотелось сравнить .НЕТ с чем то другим. Взял свою старенькую программку на Билдере (генератор случайных чисел) и переписал её под .NET . Вообщем я пришёл в недоумение о_О . Начнём с того... что мне .НЕТ начал нравится возможностями и т.д. и вроде всё так супер сделано, и вроде компилятор от майкрософта (один из лучших). И вроде всё супер!... но! Программка на Билдере бегала примерно в 10 раз быстрее... честно говоря я просто выпал оО. Все орут что у билдера компилятор фиговый.... и т.д. и т.п. ... а тут он намного быстрее оказался... да понимаю что это капля в море... и что во многих других факторах всё может быть иначе... но тут существенный прокол... на секундочку я себе представил а что если сделать огромный сервер со связкой с Оракулом и в прихватку несколько сотен юзеров в онлайне? о_О оно же наверно будет глючить ужасно...

Короче я о другом =) расскажите какие изюменки в .НЕТ? Может у него в других местах всё намного быстрее работает? И почему 90% фирм которые предлогают работу ищут программистов именно на .НЕТ ?
PM MAIL   Вверх
Partizan
Дата 17.7.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



дело далеко не в компиляторе ;)

Покажите код на C++ и код под .NET =)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
kosmonaFFFt
Дата 17.7.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Билдер компилит сразу в машинный код, а .NET - в байт-код, который потом на лету (Just In Time) преобразуется
в машинный... Из фишек например можно назвать поддержку множества языков на одной платформе, и удобство
повторного использования кода... Ну и много других фишек, которые лень вспоминать...


--------------------
user posted image
PM MAIL ICQ   Вверх
mr.Anderson
Дата 17.7.2009, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Если хочется той же (примерно) скорости, то лучше использовать unsafe-код. В вычислительных работах он будет выполняться значительно быстрее за счет отсутствия контроля CLR и множества проверок (выход за границы массива, выход за границы типа и т.п.). Поэтому попробуй переписать код в unsafe, должно получиться быстрее. А вообще, C# как бы по своей сути не претендует на лучшую скорость, т.к. работает под управлением CLR и, как правильно было сказано, сначала компилируется в байт-код, а уже потом происходит его выполнение с сохранением контроля, работой GC и тому подобным. Его сила - в его простоте, удобстве, еще большей абстрагированности от низкоуровневых проблем и огромном количестве возможностей, реализуемых с помощью библиотеки классов .NET, которые предоставляют отличную функциональность при минимальных затратах по сравнению с другими языками а-ля Паскаль, C/C++ и т.п.

Так что мое личное мнение - C# учить нужно обязательно, не зря .NET-программисты одни из наиболее востребованных в настоящее время на рынке труда.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Пончик
Дата 17.7.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 21.6.2009

Репутация: нет
Всего: нет



Мммм ребята =) если честно то только mr.Anderson практически ответил на то что я хотел =)
Я какбы уже знаю о .НЕТ. Ну о принципе работы и т.д. само собой что интерпритированый код будет в 2 раза дольше грузится. 
Цитата(mr.Anderson @  17.7.2009,  20:33 Найти цитируемый пост)
Его сила - в его простоте, удобстве, еще большей абстрагированности от низкоуровневых проблем и огромном количестве возможностей, реализуемых с помощью библиотеки классов .NET, которые предоставляют отличную функциональность при минимальных затратах по сравнению с другими языками а-ля Паскаль, C/C++ и т.п.

Вот практически самое то что я хотел услышать =) но если честно я например после Делфей или того же С++ (РАД Студио) более высокой удобности не заметил (может и на первых порах). А ещё чем отличается .НЕТ? Ну может он на чём то специализируется? Например НЕТ специализируется на Базах Данных и т.д. ну вот такое бы хотелось услышать. 


Цитата(Partizan @  17.7.2009,  19:59 Найти цитируемый пост)
дело далеко не в компиляторе ;)Покажите код на C++ и код под .NET =)

Может я и чайник в .НЕТ =) но дело в самом подходе =). Я имел ввиду не только Билдер, но тот же МФЦ 


Цитата(mr.Anderson @  17.7.2009,  20:33 Найти цитируемый пост)
Поэтому попробуй переписать код в unsafe

А как?  smile 

Если я правильно понял... унсейф это более для продвинутых программистов? Если скажем я работал не мало на С++ (1 год С++ 1 год Делфи) и уже какбы знаю азы и т.д. то я спокойно могу писать в ансейфе?
PM MAIL   Вверх
wester
Дата 17.7.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 3
Всего: 13



Пончик, 
все очень просто 
http://msdn.microsoft.com/ru-ru/library/chfa2zb8.aspx
PM MAIL   Вверх
mr.Anderson
Дата 17.7.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Пончик, насчет "а как" неплохо бы сначала погуглить про то, что вообще такое unsafe, а потом уже пробовать "а как". А вообще - в настройках проекта на вкладке Build включить галку "Allow unsafe code". А потом переписать код, допустим, так:
Код

unsafe
{
   for (...)
   { ... }
}

И потом... Нет такого понятия как ".NET специализируется на...". Нет вообще понятия специализации для языков типа паскаля, бейсика, с/с++ и уж тем более языков .NET и Java. Узкоспециализированы только некоторые языки, типа FORTRAN, который создан специально для вычислений. На языках вселенной .NET можно сделать все, что угодно, за некоторыми исключениями, которые в своем решении требуют низкоуровневой работы (допустим, антивирус на нем не напишешь в принципе). Но остальное - все, что угодно, все, что доступно твоим знаниям, на них сделать можно и, что главное, легко и быстро, без лишних проблем.

Добавлено через 4 минуты и 42 секунды
Цитата
Если я правильно понял... унсейф это более для продвинутых программистов? Если скажем я работал не мало на С++ (1 год С++ 1 год Делфи) и уже какбы знаю азы и т.д. то я спокойно могу писать в ансейфе?

Нет, не можешь. Не рекомендую. Пока ты не разберешься в деталях работы указателей, обращения с памятью, деталях функционирования твоих программ и их работы в операционной системе, нельзя, повторяю, нельзя писать unsafe-код. CLR чем и хороша, что избавляет программиста от многих проблем работы в более ранних языках, где приходилось следить за памятью, за утечками, за выходом за границы и так далее и тому подобное... Здесь этого нет по умолчанию, в этом несомненный плюс системы. И unsafe здесь оставлен только для реально нужных задач, тяжелых вычислений или, допустим, управления системой через импорт библиотек, написанных на C/C++, в которых, к примеру, функции требуют указателей в качестве аргументов. Тут без unsafe никак. Но ты же не будешь этого делать? В принципе, всех возможностей библиотеки классов .NET перечислить, наверное, невозможно, они реализуют огромное множество задач, так что вряд ли тебе в ближайшие несколько лет изучения реально понадобится unsafe-код.

Это сообщение отредактировал(а) mr.Anderson - 17.7.2009, 21:38


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
mr.Anderson
Дата 17.7.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



И еще. Сила .NET в очень многих вещах. Если вкратце.
  •  Контроль за выполнением программы со стороны CLR. Это выражается, к примеру, в следующем.
  •  Нет понятия "Исключение типа Access Violation". В safe-коде его нет и быть не может. То есть оно может возникнуть в процессе работы, но это не будет так, как на Delphi/Builder и т.п., работаешь-работаешь с программой, все нормально, начинаешь ее закрывать - и на тебе, AV. Не пойми откуда, не пойми, по каким причинам. Здесь это невозможно, если код safe.
  •  Производные из 2: все, что ты делаешь в safe, контролируется CLR, тебе не дадут вылезти за пределы массива, не дадут вылезти за пределы типа, не дадут обратиться в память "не туда", "чистого" доступа к памяти здесь нет, так что любые твои попытки это сделать не обернутся крахом системы, сменой цвета экрана там, я не знаю, BSOD'ом для "особо продвинутых". Ты просто получишь исключение времени выполнения со стороны среды. Сейчас вот сидел, экспериментировал, пытался запороть систему в safe-коде. Попробовал объявить массив байтов размером в 1 миллиард элементов. После запуска сразу же получил исключение OutOfMemoryException (нехватка оперативной + виртуальной памяти), а не обвал системы с последующим перезапуском и обрушением работающих программ. В C/C++/Pascal это обычное дело. Чувствуешь разницу?
  •  Многие проблемы ушли в прошлое, к примеру, та же работа с указателями. Если ты принимался за .NET и, в частности, C#, то ты знаешь, что указателей здесь нет как таковых (опять же, мы говорим только про safe-код). Вот мы сейчас на 1 курсе в универе проходили C, знаешь, сколько у моих одногруппников проблем с указателями? Сплошные ошибки при работе, поскольку они еще только учатся, отсюда проблемы в программах, неправильное оперирование указателями, памятью, вываливания программы, неверные результаты, дикая отладка по ночам и т.д. и т.п. "Красота", правда? А вот в C# нет указателей. Там есть ссылки. Которые не дают тебе ошибаться настолько, чтобы что-то обрушилось.
  •  Другая нотация, другая система написания кода, приближение кода к ООП-концепции, что позволит людям волей-неволей учиться писать правильный код.
  •  Кроссплатформенность. Где есть .NET (а он есть почти везде), там твоя программа будет работать вне зависимости от архитектуры, операционной системы и т.п.
  •  Ну еще можно упомянуть, что за счет создания огромной библиотеки классов .NET стало значительно проще работать со многими вещами, оперировать системой, данными и так далее.
Это только основные моменты. Убедил? )


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Пончик
Дата 17.7.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 21.6.2009

Репутация: нет
Всего: нет



Убедил!  smile 

Цитата(mr.Anderson @  17.7.2009,  21:37 Найти цитируемый пост)
Узкоспециализированы только некоторые языки, типа FORTRAN, который создан специально для вычислений.

С него то я и отталкивался =)

Цитата(mr.Anderson @  17.7.2009,  21:37 Найти цитируемый пост)
И unsafe здесь оставлен только для реально нужных задач, тяжелых вычислений или, допустим, управления системой через импорт библиотек, написанных на C/C++, в которых, к примеру, функции требуют указателей в качестве аргументов. Тут без unsafe никак. Но ты же не будешь этого делать?

Думаю что 99.99% буду =) поскольку я заядлый фанат оптимизации... то может и не для гипер задач буду... но буду! =) главное только научится танцевать с бубном  smile 

Цитата(mr.Anderson @  17.7.2009,  21:57 Найти цитируемый пост)
Многие проблемы ушли в прошлое, к примеру, та же работа с указателями. Если ты принимался за .NET и, в частности, C#, то ты знаешь, что указателей здесь нет как таковых (опять же, мы говорим только про safe-код). Вот мы сейчас на 1 курсе в универе проходили C, знаешь, сколько у моих одногруппников проблем с указателями? Сплошные ошибки при работе, поскольку они еще только учатся, отсюда проблемы в программах, неправильное оперирование указателями, памятью, вываливания программы, неверные результаты, дикая отладка по ночам и т.д. и т.п. "Красота", правда? А вот в C# нет указателей. Там есть ссылки. Которые не дают тебе ошибаться настолько, чтобы что-то обрушилось.

Жалко :( а я привык к ним... Вот читаю... вроде тут Хендл какбы заменяет их. Типа Хендл Обекта. 
Цитата(mr.Anderson @  17.7.2009,  21:57 Найти цитируемый пост)
что позволит людям волей-неволей учиться писать правильный код.

Радует =)

Цитата(mr.Anderson @  17.7.2009,  21:57 Найти цитируемый пост)
Кроссплатформенность. Где есть .NET (а он есть почти везде), там твоя программа будет работать вне зависимости от архитектуры, операционной системы и т.п.

Слышал что только на Винде  + Кубунту с графическим интерфейсом (вроде начиная с 11).

Ну ладненько =) буду надеятся что не зря учу =) 
PM MAIL   Вверх
QryStaL
Дата 17.7.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 10
Всего: 32



Цитата(Пончик @  17.7.2009,  19:32 Найти цитируемый пост)
Программка на Билдере бегала примерно в 10 раз быстрее...

Вы в .net программе оптимизацию Release поставили? И опять же, код программы на .net хотелось бы увидеть, ибо разница должна быть 10-30% процентов, но никак не 100.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
mr.Anderson
Дата 17.7.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Цитата
Думаю что 99.99% буду =) поскольку я заядлый фанат оптимизации... то может и не для гипер задач буду... но буду! =) главное только научится танцевать с бубном

Сначала научись танцевать без бубна. Я программирую серьезно уже 8 лет, и я еще не могу сказать, что я на 100% уверен, что могу писать безопасный unsafe-код.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Rififi
Дата 17.7.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: нет
Всего: 36



Пончик, 
Программка на Билдере бегала примерно в 10 раз быстрее...
это может означать только одно: криворуко-написанный код.
PM MAIL   Вверх
mihryak
Дата 17.7.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 10
Всего: 36



unsafe - вовсе не панацея, всё, конечно, зависит от задачи, но он может дать проценты, а не разы
вероятнее всего, код .нет очень кривой из-за незнания платформы
PM MAIL ICQ   Вверх
Skynin
Дата 18.7.2009, 00:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 0
Всего: 10



Присоединяюсь к сомневающимся - разница в пару десятков процентов еще так сяк. Но в 10 раз... код в студию. Очень вероятно что по неопытности использовали самые неэффективные конструкции-"паттерны" для C#, которые в С++ были вполне хороши.

Цитата

Ну о принципе работы и т.д. само собой что интерпритированый код будет в 2 раза дольше грузится.

Откуда эта цифра - в 2 раза? Во вторых CLR не умеет интерпретировать код. В третьих - "грузится" и "выполняется" совсем разные вещи.

Цитата

поскольку я заядлый фанат оптимизации... 

Когда начнут "штрафовать" деньгами, куды тот фанатизм денется smile
Тем более что и нужна то она в реальной жизни - крайне редко. Достаточно знать-понимать какие конструкции медленные, а какие - быстрые. И "один лишний запрос к БД перекроет всю твою оптимизацию в сотни раз". Так что проектировать нужно учиться, а не оптимизировать. 
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
mr.Anderson
Дата 18.7.2009, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Верно все... Сначала заставь свою программу работать, потом заставь ее работать правильно, и лишь потом заставь ее работать быстро (с). Заниматься в "99.99%" случаев оптимизацией с использованием unsafe-кода на C# при опыте программирования 1 год, таким знанием техники работы платформы .NET и таким оперированием терминами - без обид, но нельзя.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Riddik
Дата 18.7.2009, 03:25 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Цитата(mr.Anderson @  17.7.2009,  23:30 Найти цитируемый пост)
Я программирую серьезно уже 8 лет


Сорри за оффтоп, в 12 лет уже серьёзно программировали? Это как?
PM MAIL   Вверх
Пончик
Дата 18.7.2009, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 21.6.2009

Репутация: нет
Всего: нет



Цитата(QryStaL @  17.7.2009,  22:32 Найти цитируемый пост)
Вы в .net программе оптимизацию Release поставили? И опять же, код программы на .net хотелось бы увидеть, ибо разница должна быть 10-30% процентов, но никак не 100.

Обижаете ! =) я чайник но не на столько ))))))) 

Да просто с массива где записаны все кнопки типа "йцуеншзхъфывпролдж" вот так. Рендомом выбираю 1 букву и дописываю её в строку. Позже вывожу строку на екран. Тоже у меня на Билдере.
Цитата(Skynin @  18.7.2009,  00:08 Найти цитируемый пост)
Присоединяюсь к сомневающимся - разница в пару десятков процентов еще так сяк. Но в 10 раз... код в студию. Очень вероятно что по неопытности использовали самые неэффективные конструкции-"паттерны" для C#, которые в С++ были вполне хороши.

Может... я же не знаю. В С++ всё супер. Тут не очень. Предполагаю что из-за ссылок. Т.к. в С++ они есть а тут нету =) ну.... короче знаю что коряво =) . Но работает!!!  smile 

Сама процедура:
Код

*p="";
*work_p="";
Edit1->Text="";
a=Edit2->Text.ToInt();
for (int i = 0; i < a; i++) 
*p+=work[rand()%work.Length()+1 ];


ОнКриейт:
Код

p=&str;
all_p=&all;
symbols_p=&symbols;
counts_p=&counts;
letters_p=&letters;
work_p=&work;
*all_p="qwertyuiop[]asdfghjkl;'zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?`~1234567890-=\!@#$%^&*()_+|";
*symbols_p="!@#$%^&*_-+=|\-+/;][./,";
*counts_p="1234567890";
*letters_p="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";


.Н
Код

private:    // User declarations
    AnsiString str,*p,all,symbols,counts,letters,work,*all_p,*symbols_p,*counts_p,*letters_p,*work_p;
    unsigned long a;


Это хз где )))))) короче поставил кнопку и нажал на неё 2 раза  smile вот там потом и писал  smile 

Код

                 int count=Int32::Parse(textBox1->Text);
                 String^ st=L"";
                 String^ all=L"qwertyuiop[]asdfghjkl;'zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?`~1234567890-=!@#$%^&*()_+|";
                 Random^ rand=gcnew Random();
                 progressBar1->Maximum=count;
                 progressBar1->Value=0;
                 progressBar1->Visible=true;
                 label3->Visible=false;
                 unsigned int time=System::Environment::TickCount & UInt32::MaxValue;
                for (int i=0; i<count;i++)
                {
                    st+=all[rand->Next(all->Length)];
                    progressBar1->Value++;
                }
                time=(time - System::Environment::TickCount & UInt32::MaxValue) / 1000;
                label3->Text=time.ToString();
                rand=nullptr;
                String^ *st_=&st;
                textBox2->Text=st->Format("{0}",*st_);
                *st_=nullptr;
                progressBar1->Value=0;
                progressBar1->Visible=false;
                label3->Visible=true;


Знаю что скорее всего криво и т.д. но вы думаете прочитав пару страниц о Шарпе я буду писать нормально на нём? =)

Добавлено через 1 минуту и 55 секунд
Цитата(Skynin @  18.7.2009,  00:08 Найти цитируемый пост)
Тем более что и нужна то она в реальной жизни - крайне редко. Достаточно знать-понимать какие конструкции медленные, а какие - быстрые. И "один лишний запрос к БД перекроет всю твою оптимизацию в сотни раз". Так что проектировать нужно учиться, а не оптимизировать. 

Научимся =) а куда же я денусь? =)
Цитата(mr.Anderson @  18.7.2009,  00:33 Найти цитируемый пост)
Верно все... Сначала заставь свою программу работать, потом заставь ее работать правильно, и лишь потом заставь ее работать быстро (с). Заниматься в "99.99%" случаев оптимизацией с использованием unsafe-кода на C# при опыте программирования 1 год, таким знанием техники работы платформы .NET и таким оперированием терминами - без обид, но нельзя.

Пасиб! Учту =) 
PM MAIL   Вверх
QryStaL
Дата 18.7.2009, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 10
Всего: 32



))) Автор-то на Managed C++ пишет. А все думали, что на C#  smile 
Вы как-то странно время выполнения кода меряете, судя по всему проблема именно там. Используйте System.Diagnostics.Stopwatch.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
mihryak
Дата 18.7.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 10
Всего: 36



Цитата(QryStaL @  18.7.2009,  14:24 Найти цитируемый пост)
Вы как-то странно время выполнения кода меряете, судя по всему проблема именно там. Используйте System.Diagnostics.Stopwatch. 

да там ещё и UI обновляется, и строка конкатенатится через += ......

Это сообщение отредактировал(а) mihryak - 18.7.2009, 13:41
PM MAIL ICQ   Вверх
Пончик
Дата 18.7.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 21.6.2009

Репутация: нет
Всего: нет



Цитата(QryStaL @  18.7.2009,  13:24 Найти цитируемый пост)
))) Автор-то на Managed C++ пишет. А все думали, что на C#  

 smile 
а? И я думал что я на Шарпе)))))))))))))
По крайней мере у меня сложилось такое впечетление )))))
И это..... это же вроде Вин Формс оО


Цитата(QryStaL @  18.7.2009,  13:24 Найти цитируемый пост)
Вы как-то странно время выполнения кода меряете, судя по всему проблема именно там. Используйте System.Diagnostics.Stopwatch.

Почему странно? )))) В Билдере всё работало ))))))) тут нашёл что Тик каунт тоже что то в этом роде... ну и использовал =) хотя... ничего не вышло =)


Цитата(mihryak @  18.7.2009,  13:40 Найти цитируемый пост)
и строка конкатенатится через += ......

А разница то какая?! О_О ееее это же сокращённая форма
PM MAIL   Вверх
mihryak
Дата 18.7.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 10
Всего: 36



Цитата(Пончик @  18.7.2009,  14:46 Найти цитируемый пост)
А разница то какая?! О_О ееее это же сокращённая форма 

сокращённая форма от s = s + value, что тоже не стоит вызывать в цикле, т.к. на каждой итерации будет создаваться новая строка с копированием в неё содержимого предыдущего значения + нового, сами строки в .нет immutable, т.е. неизменяемые
замени на StringBuilder, убери прогресс-бар и перепроверь результат
PM MAIL ICQ   Вверх
kosmonaFFFt
Дата 18.7.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Разница хотя бы в том, что в .NET строка - "неизменяемый" объект, и при операции например += создается новый объект строки...
Для "динамического" построения строк есть класс StringBuilder, где все оптимизировано...

Не успел... smile

Это сообщение отредактировал(а) kosmonaFFFt - 18.7.2009, 13:52


--------------------
user posted image
PM MAIL ICQ   Вверх
mihryak
Дата 18.7.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 10
Всего: 36



Цитата(Пончик @  18.7.2009,  14:46 Найти цитируемый пост)
а? И я думал что я на Шарпе)))))))))))))
По крайней мере у меня сложилось такое впечетление )))))
И это..... это же вроде Вин Формс оО

на .Net, в который входит и managed c++, и c#, и VB.Net, и .......
библиотеки классов (собственно .Net Framework, включая WinForms) у них общие

Цитата(Пончик @  18.7.2009,  14:46 Найти цитируемый пост)
Почему странно? )))) В Билдере всё работало ))))))) тут нашёл что Тик каунт тоже что то в этом роде... ну и использовал =) хотя... ничего не вышло =)

потому что в .нет для замеров времени используется Stopwatch, только и всего
на новый язык нередко старые конструкции и приёмы не выйдет перенести as is

Это сообщение отредактировал(а) mihryak - 18.7.2009, 13:59
PM MAIL ICQ   Вверх
Пончик
Дата 18.7.2009, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 21.6.2009

Репутация: нет
Всего: нет



Тьфу йомайо! =)

И что мне учить? Шарп? Или Менежед С++ ? Что лучше? оО
PM MAIL   Вверх
QryStaL
Дата 18.7.2009, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 10
Всего: 32



Цитата(Пончик @  18.7.2009,  14:03 Найти цитируемый пост)
И что мне учить?

Учить нужно всю платформу в комплексе. Для начала разберитесь, что такое FCL, CLR и потом уже один из языков (я бы рекомендовал C# и потом F#).

Цитата(Пончик @  18.7.2009,  14:03 Найти цитируемый пост)
Что лучше?

Каждый инструмент под свою задачу. Определитесь с задачами...


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
Пончик
Дата 18.7.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 21.6.2009

Репутация: нет
Всего: нет



А этот Менежед С++ похож на Шарп? Ну стоит ли мне дальше читать о Менежед С++ ?

PM MAIL   Вверх
mr.Anderson
Дата 18.7.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Riddik, очень просто, писал уже серьезные программы. Для того возраста это было очень даже неплохо, выигрывал конкурсы и т.п.

Пончик, ты, елки... Ну ты даешь. Говорить о C#, когда речь шла о Managed C++... Вообще, основным языком платформы .NET считают C#, иногда сюда еще причисляют VB.NET, не знаю, почему. Но C# явно основной. Поэтому мое личное мнение - учить нужно его, а не "отростки" в виде Managed C++/VB.NET и иже с ними. А вообще - купи себе Троелсена книгу "C# и платформа .NET 3.0" и сиди разбирайся по ней. И не пиши программы, пока не научишься чему-то толковому из этой книги, потому что стиль написания кода у тебя, мягко говоря, хромает. Книга хорошая, поэтому покупай и учись.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Partizan
Дата 18.7.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



Пончик, зачем все эти мелкие лишние вопросы? не проще ли погуглить 10 секунд, вместо того, чтобы часами ждать ответа?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Riddik
Дата 18.7.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Цитата(mr.Anderson @  18.7.2009,  17:45 Найти цитируемый пост)
очень просто, писал уже серьезные программы. Для того возраста это было очень даже неплохо, выигрывал конкурсы и т.п.

Очень похвально ;)
PM MAIL   Вверх
Пончик
Дата 18.7.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 21.6.2009

Репутация: нет
Всего: нет



Цитата(mr.Anderson @  18.7.2009,  17:45 Найти цитируемый пост)
ты, елки... Ну ты даешь. Говорить о C#, когда речь шла о Managed C++...

 smile честно сам так думал... просто я знал что C# это .НЕТ. Ну и... смотрю мол оО вроде оно =)


Цитата(mr.Anderson @  18.7.2009,  17:45 Найти цитируемый пост)
А вообще - купи себе Троелсена книгу "C# и платформа .NET 3.0" и сиди разбирайся по ней.

 smile 

Цитата(mr.Anderson @  18.7.2009,  17:45 Найти цитируемый пост)
потому что стиль написания кода у тебя, мягко говоря, хромает.

Хе хе само собой =) Ну на чистом С++ вроде не плохо. Но тут же не С++ =) потому само собой что сажусь разбиратся! ;)

PM MAIL   Вверх
ДобренькийПапаша
Дата 23.7.2009, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Человек застеснялся наверно)))
А ну-ка давай код сюда быстро!  smile 


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
pilotnet
Дата 24.7.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



Цитата(mr.Anderson @  17.7.2009,  21:57 Найти цитируемый пост)
После запуска сразу же получил исключение OutOfMemoryException (нехватка оперативной + виртуальной памяти), а не обвал системы с последующим перезапуском и обрушением работающих программ. В C/C++/Pascal это обычное дело. Чувствуешь разницу?


в С++ так же  получишь эксепшен  smile 


Цитата(mr.Anderson @  17.7.2009,  21:57 Найти цитируемый пост)
Кроссплатформенность. Где есть .NET (а он есть почти везде), там твоя программа будет работать вне зависимости от архитектуры, операционной системы и т.п.


ну тут вообще насмешил  smile 
Нету нигде кроме виндовса   smile 

разве что  mono 
PM MAIL   Вверх
ДобренькийПапаша
Дата 24.7.2009, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Цитата

разве что  mono


Portable.Net охватывает сразу несколько: Win32, AIX, BeOs, Mac OS X, Solaris, Linux и чёт ещё наверно...)))



--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
mihryak
Дата 24.7.2009, 10:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 10
Всего: 36



Цитата(mr.Anderson @  17.7.2009,  22:57 Найти цитируемый пост)
 Нет понятия "Исключение типа Access Violation". В safe-коде его нет и быть не может. То есть оно может возникнуть в процессе работы, но это не будет так, как на Delphi/Builder и т.п., работаешь-работаешь с программой, все нормально, начинаешь ее закрывать - и на тебе, AV. Не пойми откуда, не пойми, по каким причинам. Здесь это невозможно, если код safe.

ещё как есть, кстати smile
System.AccessViolationException
получал его в safe-коде при многопоточном использовании MS SQL CE 3.5
Цитата(MSDN)
В программах, состоящих целиком из допускающего проверку управляемого кода, все ссылки являются либо допустимыми, либо пустыми, и нарушения прав доступа невозможны. ИсключениеAccessViolationException происходит только когда допускающий проверку управляемый код взаимодействует с неуправляемым кодом или с небезопасным управляемым кодом.

да, в моём случае было взаимодействие с неуправляемым кодом, но так или иначе любой .нет-код будет в конце концов взаимодействовать с неуправляемым, так что нет никакой гарантии, что это исключение никогда не встретится
PM MAIL ICQ   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2291 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.