|
Элегантные решения
|
|||
---|---|---|---|
#18+
Приветствую всех. Хочу в данном топике поспрашивать о реализации некоторых алгоритмов, которые, как мне кажется, можно решить более элегантно. Например, надо сравнить массив из 4 байт с массивом, заполненным нулями. Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 13:54 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
saxixПриветствую всех. Хочу в данном топике поспрашивать о реализации некоторых алгоритмов, которые, как мне кажется, можно решить более элегантно. Например, надо сравнить массив из 4 байт с массивом, заполненным нулями. Код: c# 1. 2. 3. 4. 5.
Как вариант...проверки Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 13:58 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
saxix, Вы ни алгоритм не описали, ни то, зачем он нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 14:06 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
skyANAsaxix, Вы ни алгоритм не описали, ни то, зачем он нужен. Я привел для примера. А данных кусок кода ...для проверки, изменилось ли "содержание" массива после его инициализации ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 14:09 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
saxixskyANAsaxix, Вы ни алгоритм не описали, ни то, зачем он нужен. Я привел для примера.То есть Вы предлагаете обсуждать алгоритмы без их описания и реальных вариантов использования? P.S.: а касательно сравнения массива байт, все варианты уже собраны и легко гуглятся: Comparing two byte arrays in .NET . ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 14:15 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
saxixНапример, надо сравнить массив из 4 байт с массивом, заполненным нулями. Например, Код: plaintext
или, что логичнее, Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 15:55 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
Нахлобуч, завтра массив будет инициализироваться числами Фибоначи, нужно более "элегантное" решение :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 16:07 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 17:22 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
cdtyjv, ты еще ассемблерные вставки на дельфи предложи с референсированием DLL. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 17:30 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
codearticles.ru, Очень сложно придумать что-то более элегантнее моего варианта. Никаких циклов, никакой грязи, просто сравниваем участок памяти с нулем. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 18:07 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
Свеном, ТС в итоге сформулировал задачу так: "изменилось ли "содержание" массива после его инициализации". То есть в общем случае надо сравнивать не с нулём, а с неким начальным состоянием. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 18:25 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
cdtyjvОчень сложно придумать что-то более элегантнее моего варианта. Никаких циклов, никакой грязи, просто сравниваем участок памяти с нулем.Разве что сборка будет помечена "Allow Unsafe Code", и доверия к ней не будет никакого. И кому она такая нужна? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 08:25 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
Лучше скажите, есть ли где-нибудь достаточно обширный список решений, разбитый по классам задачь. А то надо что-то - либо отвлекаешь занятых людей на ПТ своими вопросами, либо МСДН перелопачиваешь. А новичкам полезно иметь список "еслишь хочешь то-то - надо делать так". Например, задача "Producer-Consumer" - решать с помощью таких-то классов, краткий пример кода с использованием TPL, "по-старинке" и ещё что-нибудь экзотическое. А то в этом дотнете уже столько устаревших классов и подходов, которые сохраняются только из-за легаси, что новичку трудно разобраться, как решать задачу на такой-то версии фреймворка. Он видит три разных подхода, и не знает, что выбрать. Даже не знает, заменяет ли один подход другой (т. е., типа, подход на старой версии фреймворка и улучшенный подход на новой) или это непересекающиеся подходы для разных условий. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 09:17 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
авторНапример, задача "Producer-Consumer" Это я сейчас не помощи по этой задаче попросил, а просто в качестве примера привёл. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 09:18 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
НемоКэп42, на лекции и семинары по параллельным вычислениям ходить надо было! :) Но никогда не поздно: Параллельные вычисления и многопоточное программирование . ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 09:29 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
Алексей КРазве что сборка будет помечена "Allow Unsafe Code", и доверия к ней не будет никакого. И кому она такая нужна?Чушь не надо пороть. unsafe к доверию не имеет никакого отношения. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 09:38 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
cdtyjvАлексей КРазве что сборка будет помечена "Allow Unsafe Code", и доверия к ней не будет никакого. И кому она такая нужна?Чушь не надо пороть. unsafe к доверию не имеет никакого отношения.К доверию с моей стороны unsafe имеет прямое отношение. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 10:44 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
Алексей К, Как же вы тогда используете стандартные кламсы, там же ансейф на ансейфе сидит? К счастью, ваше глупое отношение к ансейфу никак не сказывается на спрос на продукты, которые его используют. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 11:10 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
cdtyjvАлексей К, Как же вы тогда используете стандартные кламсы, там же ансейф на ансейфе сидит? К счастью, ваше глупое отношение к ансейфу никак не сказывается на спрос на продукты, которые его используют.В моём случае надёжность важнее чем производительность. Ты потом поймёшь, что это означает. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 12:13 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
cdtyjv Код: c# 1. 2. 3. 4. 5. 6.
Красивое, но непрактичное. Во-первых, только один частный случай проверки на ноль, причем очень специфический - именно массив из 4 байт и именно сравнение на 0. Во-вторых, красоту этого решения может оценить только человек, знающий с++, что совершенно ненужным образом ограничивает компетенции разработчика (увы, свеном, не все являются экспертами сразу по трем языкам). В-третьих, требует Allow Unsafe Code, что для банальной проверки массива, причем очень частным случаем, явно излишне. В общем, в unsafe ничего плохого нет, но не на такой же ерунде. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 12:26 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
Arm79Во-вторых, красоту этого решения может оценить только человек, знающий с++, что совершенно ненужным образом ограничивает компетенции разработчика.C++ должны знать все. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 12:43 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
Алексей КArm79Во-вторых, красоту этого решения может оценить только человек, знающий с++, что совершенно ненужным образом ограничивает компетенции разработчика.C++ должны знать все. Увы, я знаю только основы :-) Ни разу не возникала необходимость его использования. Кстати, про перфоманс в C#: http://habrahabr.ru/post/165729/ Достаточно интересная статья, хотя примеры оптимизированного кода ломают глаз и выносят мозг. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 13:00 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
Arm79Алексей Кпропущено... C++ должны знать все. Увы, я знаю только основы :-) Ни разу не возникала необходимость его использования. Кстати, про перфоманс в C#: http://habrahabr.ru/post/165729/ Достаточно интересная статья, хотя примеры оптимизированного кода ломают глаз и выносят мозг. Статью Свеном написал. И по комментам сразу понятно. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 13:28 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
А ваще, в статье даже нет замены всех умножений и делений на 2 байтовыми сдвигами и прочими такими "оптимизациями". Ещё понравилась ветка http://habrahabr.ru/post/165729/#comment_5748857 Видел повсеместную расстановку null'ов руками в паттерне Dispose. Т. е. вызывается Dispose() для объекта, а потом ему null присваивается. По-моему, при таких требованиях к оптимизации и скорости кода (выжимаем процентики производительности) лучше писать на С/С++. А ещё лучше - сразу на ассемблере. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 13:32 |
|
Элегантные решения
|
|||
---|---|---|---|
#18+
А вообще, скажите, что дешевле - посадить пару человек на зарплату по 150 килорублей каждого, чтобы они код проекта вот так вот заоптимизировали за год, или купить ещё один Ксеон, пару плашек оперативы и оплачивать чуть бОльшие счета за электричество? По-моему, если нужна производительность, то надо использовать подходящий для этого инструмент. C#'пы и джавы всякие явно не для этого. А попытки выточить напильником из паровоза феррари, да ещё заставить полученное ездить так же быстро - только напрасная трата ресурсов. Хотя, конечно, можно гордиться личным достижением - смог, мол. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 13:55 |
|
|
start [/forum/topic.php?fid=20&fpage=106&tid=1402374]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 142ms |
0 / 0 |