![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Wizard_Memfis |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 12.2.2007 Где: г. Донецк, Украин а Репутация: 1 Всего: 4 |
To zloyden: да уж...
![]() To source777: вопрос состоит не в законе дырявых абстракций, а в том что уровень абстракций позволяет сделать код более читабельным и увеличить скорость разработки, но теряя при этом время выполенния и увеличивая ресурсы!!! ![]() А теперь по сути: вопрос был в следующем "не приведет ли это в большой потере скорости?". Я думаю, это не миф, что for и foreach делают цикл, да вот только foreach хоть и дает сразу абстракцию( объект на выходе), да только скорость его ОЧЕНЬ медленнее, чем for!!! Вот и не будет тоже с LINQ? ![]() P. S. какой-то флуд пошел не по теме ![]() Это сообщение отредактировал(а) Wizard_Memfis - 21.5.2008, 15:07 --------------------
www.binary-studio.com |
|||
|
||||
Neutral13 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 4.4.2008 Репутация: нет Всего: нет |
||||
|
||||
zloyden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.5.2008 Репутация: нет Всего: нет |
Даже если и так ![]() Мои доводы от этого перестают быть обоснованными? Мое мнение заключается в том, что увеличение абстракции должно быть обоснованным и иметь разумное соотношение между удобством и производительностью, однако к теме моего предидущего поста это мало относится и просьба этот пост не обсуждать, дабы не увести беседу слишком далеко |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
zloyden, ты забыл один базовый постулат: производительность - это комплексная характеристика, которая включает и производительность труда в том числе... В результате применение находят лишь те абстракции, которые увеличивают производительность...
Очередное необоснованное утверждение, тем более, что foreach и for в большинстве случаев генерируют в конце концов один и тот же код... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Wizard_Memfis |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 12.2.2007 Где: г. Донецк, Украин а Репутация: 1 Всего: 4 |
Это более чем обосновонное утверждение http://www.gotdotnet.ru/LearnDotNet/CSharp/513899.aspx Поэтому от foreach вообще принято отказаться! ![]() --------------------
www.binary-studio.com |
|||
|
||||
zloyden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.5.2008 Репутация: нет Всего: нет |
Многие согласны, что чаще всего новые абстракции дают удобство программирования, однако надо иногда думать и про пользователя. Просьба не мешать в кучу производительность программ и производительность программистов. Я обсуждал первое, и при этом упомянул что за второе платят первым(в данном контексте было упомянуто железо). Однако человек задал конкретный вопрос про скорость ПРОГРАММЫ, а не про скорость разработки, поэтому считаю необоснованным упоминание производительности работы программиста, как не имеющего в данном случае значение(был задан КОНКРЕТНЫЙ вопрос). |
|||
|
||||
Wizard_Memfis |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 12.2.2007 Где: г. Донецк, Украин а Репутация: 1 Всего: 4 |
Это более чем обосновонное утверждение: http://www.gotdotnet.ru/LearnDotNet/CSharp/513899.aspx Я думаю это статью видел каждый!
Ерунда, foreach создает еще целый класс-перечислитель( Рихтер) ![]()
Вот именно это я и спрашиваю: Дейстительно ли Linq увеличивают производительность, а не производительность разработки??? --------------------
www.binary-studio.com |
||||||
|
|||||||
source777 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
Если он нужен, то безусловно, однако в таких случаях применять for вообще дикость, да и ничего не изменится в плане производительности, если вручную вызывать методы итератора...
Преобразуем один из примеров к виду, который действительно позволяет сравнить однотипные действия:
Как результат получим:
И где твоё обоснование? А мораль, сей басни такова: 1) нет ничего абсолютного, всё относительно 2) нет большего зла, чем преждевременная оптимизация Глупо, очень глупо. См. мораль, там написано почему... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||||||||
|
|||||||||||
Wizard_Memfis |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 12.2.2007 Где: г. Донецк, Украин а Репутация: 1 Всего: 4 |
Выйде из Debug и скомпиль свою прогу в Release
у меня такие числа: foreach - 603 for - 429 Вот тебе и вся мораль! ![]() P. S. Вообще числа у тебя какие-то левые ![]() Это сообщение отредактировал(а) Wizard_Memfis - 22.5.2008, 14:11 --------------------
www.binary-studio.com |
|||
|
||||
HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 14 Всего: 42 |
Хм, весело
Realese foreach - 425 for - 668 Debug foreach - 879 for - 775 |
|||
|
||||
Wizard_Memfis |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 12.2.2007 Где: г. Донецк, Украин а Репутация: 1 Всего: 4 |
Действительно, интересно...
Если отбросить числа, то у нас на офисе уже у всех другие числа ![]() Но смысл такой: в Debug for медленнее а в Release наоборот быстрее Ерунда какая-то! P. S. Нашсли комп на офисе у которого все как раз наоборот! ![]() ![]() ![]() Это сообщение отредактировал(а) Wizard_Memfis - 22.5.2008, 14:28 --------------------
www.binary-studio.com |
|||
|
||||
zloyden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.5.2008 Репутация: нет Всего: нет |
Скомпилируйте в релиз
![]() А для чистоты эксперимента стоит запускать не из студии, а готовый исполняемый файл Это сообщение отредактировал(а) zloyden - 22.5.2008, 14:43 |
|||
|
||||
source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
типо, ты, если явно не написано, не догадался, что это результаты Release? Спец. для тебя скомпилировал в Debug-режиме:
Добавлено @ 14:53
А числа зависят от конфигурации компа... Добавлено через 10 минут и 50 секунд Wizard_Memfis, открой для себя профайлинг, а не делай поспешных решений, типа "отказаться от foreach", на основе синтетических тестов из статей, как в одном из комментариев к той статье сказали, "статья ни о чём", так и есть... Добавлено через 14 минут Можно потратить год на вылизывание каждой строчки программы и добиться прироста быстродействия на 10%, а можно оптимизировав одно из узких мест за 1 день добиться прироста быстродействия на 300%. Но выбор конечно за тобой... Это сообщение отредактировал(а) source777 - 22.5.2008, 14:54 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
Вот кстати, если кто-то засомневался в предыдущем примере другой пример:
Результаты запущенных из TotalCmd по третьему разу(для успешной JIT-компиляции) exeшников:
В принципе можно написать синтетический тест ещё больше приближенный к реальным программам, и посмотреть, как foreach будет в разы обгонять for, просто время на это сейчас нет, но если кому интересно, то могу пояснить почему так произойдёт... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
Wizard_Memfis |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 12.2.2007 Где: г. Донецк, Украин а Репутация: 1 Всего: 4 |
Специально для некотрым тыкаю пальчиком в результаты твоих "исходников":
почитай что говорят результаты трех разных людей: Я
У zloyden я так предполагяю что тоже тчо-то похожее И наконец HalkaR
И твоих цифр здесь нет!!! ![]() P. S. И всегда найдется чел который не верит в очевидные вещи, и будет коментарить чужую статью!Рихтер фуфло, компилятор гонит, статьи тоже ерунда. А я вот знаю все! P. P. S. У тебя случайно не 3 фреймверк? Я запускаю на 2! Это сообщение отредактировал(а) Wizard_Memfis - 22.5.2008, 15:53 --------------------
www.binary-studio.com |
||||
|
|||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
3-ий, тебе надо объявления свойств переписать в стиле второго.
Цифры от компа зависят, характер результатов у HalkaR такой же как у меня... Ой, и не говори, кстати сегодня такой чел - ты, ну и автор статьи конечно тоже виноват, что запутал тебя ![]() -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Wizard_Memfis, JIT в 3-ем и 2-ом фреймворке одинаковые. А вот код, который JIT генерируют для разных машин - разный. И пытатся заранее угадать и прооптимизировать - просто бессмысленно.
|
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
P.S. А Рихтера ты невнимательно читал, если читал...
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Wizard_Memfis |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 12.2.2007 Где: г. Донецк, Украин а Репутация: 1 Всего: 4 |
Помойму сейчас ты нехочешь видеть ни характер результатов, ни очевидных вещей. Может читал я и невнимательно, но кто-то его явно не читал! Этот флуд мне уже надоел!Только у одного человека в офисе был твой результат, у всех остальных for был в разы быстрее! P. S. Этот разговор не в тему и к чему не приведет!Считаешь так - пиши!Потом может вспомнишь и поймешь... ![]() ![]() ![]() --------------------
www.binary-studio.com |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
Wizard_Memfis, не смог что ли второй тест запустить, бедненький?
На тебе адаптированный к .NET 2.0 код класса Trio:
![]() Можно подытожить так: for сам по себе быстрее, чем foreach, но код, использующий for, медленнее, чем код использующий foreach, при известных (многим, но не тебе и твоему отделу) обстоятельствах, которые встречаются в реальных исходниках в сотни раз чаще, чем в синтетических тестах... И Рихтер со мной согласен в отличии от тебя ![]() P.S. Но теперь тебе придётся извиняться, чтобы я тебе объяснил суть этих обстоятельств... P.P.S. Мне искренне жаль твоего работодателя... Добавлено через 6 минут и 33 секунды А по теме: не стоит тебе при такой кривизне рук LINQ использовать, а то потом будешь врать по примеру своих знакомых, что LINQ только и делает, что тормозит... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Wizard_Memfis |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 12.2.2007 Где: г. Донецк, Украин а Репутация: 1 Всего: 4 |
Не хотел я таким "богатеньким" еще раз писать, а второй великий код просто запускать не хотел.
А слушать твои обяснения основанные на теории дырявых абстракций и другие, не менее ВЕЛИКИЕ теории одной воды!!!слушать и подавно не хочу!!! Повторю еще раз слова (с опытом придешь, хотя навряд ли)
--------------------
www.binary-studio.com |
|||
|
||||
HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 14 Всего: 42 |
Господа, у меня почему-то появилось стойкое желание влепить вам каждому по минусу за неуважение к собеседнику, нежелание понять его и откровенное хамство в постах. Вы общаетесь как две базарные торговки не поделившие клиента. Я еще могу понять такое в Религиозных воинах, но здесь то тематический раздел.
Стыдно, господа. |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
zloyden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.5.2008 Репутация: нет Всего: нет |
Можно узнать причины? Мне интересно например, а Рихтера я еще не дочитал
|
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Veitmen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 3 Всего: 4 |
+1 А вообще мне кажется что спор впустую разводим. Всегда есть ситуации когда один оператор (цикл, функция и т.д.) лучше чем другой и спор бессмыслен на тему что лучше вообще. Foreach удобен и прост при работе с типизированными перечислениями, если не типизированны, то я предпочитаю for. Почему? Я думаю все понятно почему. Приходится делать упаковку и распоковку один лишний раз при использовании foreach. Но это лирика. Что касается Linq, то это очень удобный инструмент, и не использовать его глупо, даже если он работает чуть медленнее. Никто не говорит о очень большом отставании в производительности. Ведь у мелкомягких тоже не дураки сидят и ерунду предлагать не будут. Linq to sql вообще божественная штука. Включает оптимизаци запросов для MS sql Server, удобство и еще много всяких приколов. Короче юзать надо, даже если есть отставание в производительности, но если оно и есть, то оно слишком мало что бы принебречь использовать сей прекрасный инструмент. ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |