Re[37]: Коробочные продукты на .NET (НЕ для программистов/ад
От: kuj  
Дата: 15.06.09 07:41
Оценка:
Здравствуйте, hattab, Вы писали:


kuj>>>Ну и что ты пытаешься доказать? Что mutable строки Delphi быстрее выполняют конкатенацию, чем immutable строки дотнет? Это как бэ by design фича. Поэтому строки в дотнет разделены по функциям на неизменяемый класс String и вспомогательный класс StringBuilder для быстрой конкатенации. Говоря иначе, везде, где требуется выполнять большое количество модификаций в строке используется StringBuilder, и скорости он дает такую, что С++ и Delphi скромно курят в сторонке — особенно на replace`ах. ;]


WF>>С какой радости? Тот же массив чаров (в одном, правда, это символы, в другом байты, но не суть важно), что в .NET StringBuilder, что в C++ std::string. Алгоритмическая сложность replace будет та же самая.


H>У StringBuilder'а двукратный оверхед по памяти, какой же там массив чаров?


Нет там двухкратного оверхеда, кроме редчайших случаев: типа буфер заполнен на 100% и нужно добавить всего один символ. RTFM.
Re[37]: Коробочные продукты на .NET (НЕ для программистов/ад
От: kuj  
Дата: 15.06.09 07:45
Оценка:
Здравствуйте, hattab, Вы писали:

Y>>>При этом проводя в ToArray() больше времени, чем в Concat()


Y>>Дабы избежать возможных дебатов по выделенному, перепишу:

Y>>
Y>>var timer = new Stopwatch();
Y>>            timer.Start();
Y>>            var source = new string[100000];
Y>>            for (int i = 0; i < 100000; i++)
Y>>            {
Y>>                source[i] = "c1";
Y>>            }
Y>>            var s = string.Concat(source);
Y>>            timer.Stop();
Y>>            Console.WriteLine("result: elapsed {0} ({1})", timer.ElapsedMilliseconds, s.Length);
Y>>

Y>>result: elapsed 2 (200000)

H> И сколько тут операци конкатенации?


Догадайся. Если сможешь. ;] Если не сможешь, rtfm исходник string.Concat. ;]
Re[36]: Коробочные продукты на .NET (НЕ для программистов/ад
От: kuj  
Дата: 15.06.09 07:47
Оценка:
Здравствуйте, WFrag, Вы писали:

kuj>>Ну и что ты пытаешься доказать? Что mutable строки Delphi быстрее выполняют конкатенацию, чем immutable строки дотнет? Это как бэ by design фича. Поэтому строки в дотнет разделены по функциям на неизменяемый класс String и вспомогательный класс StringBuilder для быстрой конкатенации. Говоря иначе, везде, где требуется выполнять большое количество модификаций в строке используется StringBuilder, и скорости он дает такую, что С++ и Delphi скромно курят в сторонке — особенно на replace`ах. ;]


WF>С какой радости? Тот же массив чаров (в одном, правда, это символы, в другом байты, но не суть важно), что в .NET StringBuilder, что в C++ std::string. Алгоритмическая сложность replace будет та же самая.


По факту.
Re[36]: Коробочные продукты на .NET (НЕ для программистов/ад
От: criosray  
Дата: 15.06.09 07:51
Оценка: 2 (1)
Здравствуйте, WFrag, Вы писали:

kuj>>Ну и что ты пытаешься доказать? Что mutable строки Delphi быстрее выполняют конкатенацию, чем immutable строки дотнет? Это как бэ by design фича. Поэтому строки в дотнет разделены по функциям на неизменяемый класс String и вспомогательный класс StringBuilder для быстрой конкатенации. Говоря иначе, везде, где требуется выполнять большое количество модификаций в строке используется StringBuilder, и скорости он дает такую, что С++ и Delphi скромно курят в сторонке — особенно на replace`ах. ;]


WF>С какой радости? Тот же массив чаров (в одном, правда, это символы, в другом байты, но не суть важно), что в .NET StringBuilder, что в C++ std::string. Алгоритмическая сложность replace будет та же самая.


В std::string отсутствует полнотекстовый поиск-замена. Если же в цикле делать find/replace`ы, то работать будет на порядки дольше StringBuilder.Replace (StringBuilder 4 сек, std::string ждал 5 минут(!!!) не дождался, отключил).
В Delphi ситуация не лучше, как г-н хаттаб сам недавно подтвердил.
Re[36]: Коробочные продукты на .NET (НЕ для программистов/ад
От: criosray  
Дата: 15.06.09 08:00
Оценка:
Здравствуйте, hattab, Вы писали:

H>Как раз таки наоборот. criosray сравнил сишную std:string с .NET'овским StringBuilder'ом.

Вы хоть поняли зачем я это делал? Это было сравнение для того, чтоб расставить точки над и в споре о целесообразности решения сделать строки immutable. Я показал, что имя все плюсы неизменяемых строк, мы так же имеем возможность очень быстро формировать и модифицировать строки с помощью вспомогательного класса StringBuilder.

По большому счету это был ответ на "выпад" г-на Егора в сообщении к Синклеру, где он утверждал, что mutable строки С++ более универсальны и быстры (примерно так, точной фразы не помню, но суть такая была)...

H>Я по аналогии сделал сравнение со строками Delphi, но это был вовсе не идентичный алгоритм.

Идентичный. Просто реализация разнится в силу разности языков и платформ.

H>В выделеном, я как раз и говорю, что даже при использовании спец.класса ориентированного на перформанс, обычные строки Delphi при конкатенации ему ничуть не уступают. А далее говорю, что если сделать алгоритм идентичным...

А как же чей-то контрпример давече, где в цикле вызываются конструкторы объекта и предлагается сравнить использование памяти?.. Он идентичный? Получается (по Вашей логике), что идентичный... Хотя в действительности идентична там реализация, но при этом реализация на Делфи некорректна в виду отсутствия явных вызовов деструкторов, что приведет к утечке памяти....
Re[37]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 15.06.09 10:06
Оценка:
Здравствуйте, kuj, Вы писали:

H>>>>Строки Delphi и строки .NET. Не классы со сложным внутренним представлением строки, а именно, непосредствено, строки.


kuj>>>Ну и что ты пытаешься доказать?


H>>Еще раз, для тебя, умника: я ничего не сравнивал. Научись уже читать и улавливать смысл.


kuj>Я ржал. Теперь он уже ничего не сравнивал. Написал фигню, ткнули носом в фигню, а теперь вместо того, чтоб скромно в сторонке обтекать да обсыхать, пытаешься съехать с темы.


Покойся с миром.
Re[37]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 15.06.09 10:06
Оценка: -1
Здравствуйте, gandjustas, Вы писали:

H>>Это и есть идентичный алгоритм, а ни какая не самодеятельность. Строки со строками, вполне естественно.

G>Это не идентичный алгоритм. Так как ты сравниваешь мутабельные строки с иммутабельными.

Platform SDK: This class represents a string-like object whose value is a mutable sequence of characters. Вопросы?

H>>Как раз таки наоборот. criosray сравнил сишную std:string с .NET'овским StringBuilder'ом. Я по аналогии сделал сравнение со строками Delphi, но это был вовсе не идентичный алгоритм. В выделеном, я как раз и говорю, что даже при использовании спец.класса ориентированного на перформанс, обычные строки Delphi при конкатенации ему ничуть не уступают. А далее говорю, что если сделать алгоритм идентичным...

G>
G>Не сливай так откровенно.
G>Идентичный алгоритм — тот который использует объекты с одинаковым предназначением, а не с одинаковым названием.

Одна функция копирует память по одному байту, другая по 4. Обе копируют память. Следуя твоей логике их алгоритмы идентичны, а это не так.
Re[38]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 15.06.09 10:06
Оценка:
Здравствуйте, WFrag, Вы писали:

H>>У StringBuilder'а двукратный оверхед по памяти, какой же там массив чаров?


WF>В огороде бузина, а в Киеве дядька?


WF>У std::string длина строки и capacity тоже могут не совпадать. Как там в Delphi — не в курсе.


Это слова criosray'я о полнотекстовом поиске занесли в мою душу сомнения (думал, мож там строка организуется более сложной структурой) Сейчас глянул ildasm'ом, магии не обнаружил
Re[38]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 15.06.09 10:07
Оценка:
Здравствуйте, yuriylsh, Вы писали:

Y>>>>При этом проводя в ToArray() больше времени, чем в Concat()


Y>>>Дабы избежать возможных дебатов по выделенному, перепишу:


H>> И сколько тут операци конкатенации?


Y>Ты читать умеешь? Я написал для чего я переписал код. Могу добавить выделение, так понятней?


А зачем ты вообще писал этот код? Идентичности ты не добавил, а меряться органами у меня цели не было
Re[37]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 15.06.09 10:07
Оценка: -1 :)
Здравствуйте, criosray, Вы писали:

H>>Как раз таки наоборот. criosray сравнил сишную std:string с .NET'овским StringBuilder'ом.

C>Вы хоть поняли зачем я это делал? Это было сравнение для того, чтоб расставить точки над и в споре о целесообразности решения сделать строки immutable. Я показал, что имя все плюсы неизменяемых строк, мы так же имеем возможность очень быстро формировать и модифицировать строки с помощью вспомогательного класса StringBuilder.

Причина твоего сравнения тут не важна. Я просто использовал его для иллюстрации утопичности стремления к идентичным алгоритмам.

C>По большому счету это был ответ на "выпад" г-на Егора в сообщении к Синклеру, где он утверждал, что mutable строки С++ более универсальны и быстры (примерно так, точной фразы не помню, но суть такая была)...


H>>Я по аналогии сделал сравнение со строками Delphi, но это был вовсе не идентичный алгоритм.

C>Идентичный. Просто реализация разнится в силу разности языков и платформ.

Так я об этом пишу, уже почти в каждом посте...

H>>В выделеном, я как раз и говорю, что даже при использовании спец.класса ориентированного на перформанс, обычные строки Delphi при конкатенации ему ничуть не уступают. А далее говорю, что если сделать алгоритм идентичным...

C>А как же чей-то контрпример давече, где в цикле вызываются конструкторы объекта и предлагается сравнить использование памяти?.. Он идентичный? Получается (по Вашей логике), что идентичный... Хотя в действительности идентична там реализация, но при этом реализация на Делфи некорректна в виду отсутствия явных вызовов деструкторов, что приведет к утечке памяти....

Требование убрать мусор, как раз таки увеличивает идентичность т.к. в случае с C# он таки убирается т.е. алгоритмическое действие, явно не прописанное, но существующее в силу организации платформы, выполняется. Неидентичным он был бы, еслиб я предложил заменить TMyObject.Create на TMyAdvRec.Create() (advanced record).
Re[38]: Коробочные продукты на .NET (НЕ для программистов/ад
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 15.06.09 10:26
Оценка: +1
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, gandjustas, Вы писали:


H>>>Это и есть идентичный алгоритм, а ни какая не самодеятельность. Строки со строками, вполне естественно.

G>>Это не идентичный алгоритм. Так как ты сравниваешь мутабельные строки с иммутабельными.
H>Platform SDK: This class represents a string-like object whose value is a mutable sequence of characters. Вопросы?
is a mutable sequence of characters прочитал? В чем отличия семантические от дельфовой строки?

H>>>Как раз таки наоборот. criosray сравнил сишную std:string с .NET'овским StringBuilder'ом. Я по аналогии сделал сравнение со строками Delphi, но это был вовсе не идентичный алгоритм. В выделеном, я как раз и говорю, что даже при использовании спец.класса ориентированного на перформанс, обычные строки Delphi при конкатенации ему ничуть не уступают. А далее говорю, что если сделать алгоритм идентичным...

G>>
G>>Не сливай так откровенно.
G>>Идентичный алгоритм — тот который использует объекты с одинаковым предназначением, а не с одинаковым названием.

H>Одна функция копирует память по одному байту, другая по 4. Обе копируют память. Следуя твоей логике их алгоритмы идентичны, а это не так.

Тут стоит говорить об эквивалентности
Re[38]: Коробочные продукты на .NET (НЕ для программистов/ад
От: kuj  
Дата: 15.06.09 11:05
Оценка:
Здравствуйте, hattab, Вы писали:


H>Требование убрать мусор, как раз таки увеличивает идентичность т.к. в случае с C# он таки убирается т.е. алгоритмическое действие, явно не прописанное, но существующее в силу организации платформы, выполняется. Неидентичным он был бы, еслиб я предложил заменить TMyObject.Create на TMyAdvRec.Create() (advanced record).


Ну так допиши создание новой строки на делфи. Это ж тоже "алгоритмическое действие, явно не прописанное, но существующие в силу организации платформы". ;]
Re[22]: Коробочные продукты на .NET (НЕ для программистов/ад
От: CreatorCray  
Дата: 15.06.09 11:09
Оценка:
Здравствуйте, criosray, Вы писали:

C>Я Вас правильно понял? Студия тормозит на процессоре, которому сто лет в обед (скороу уж десять лет с момента выпуска первых p4) — да как она смеет!

Да, 2008я студия тормозит там, где 2003я не тормозит. Причем с точки зрения редактирования С++ кода ничего нового с тех пор не добавилось. 2008я студия даже до уровня VAX не дотянулась.
Процу этом кстати сильно меньше 10 лет.
Хочешь проспонсировать апгрейд?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[23]: Коробочные продукты на .NET (НЕ для программистов/ад
От: CreatorCray  
Дата: 15.06.09 11:09
Оценка:
Здравствуйте, hattab, Вы писали:

C>>Я Вас правильно понял? Студия тормозит на процессоре, которому сто лет в обед (скороу уж десять лет с момента выпуска первых p4) — да как она смеет!


H>А она, что, загружает проц на 100% при наборе текста

Нет, заметно лагает.
Такое ощущение что сидишь не за локальным компом а за удаленным через RDP
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[39]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 15.06.09 11:13
Оценка: :)
Здравствуйте, gandjustas, Вы писали:

H>>>>Это и есть идентичный алгоритм, а ни какая не самодеятельность. Строки со строками, вполне естественно.

G>>>Это не идентичный алгоритм. Так как ты сравниваешь мутабельные строки с иммутабельными.
H>>Platform SDK: This class represents a string-like object whose value is a mutable sequence of characters. Вопросы?
G>is a mutable sequence of characters прочитал? В чем отличия семантические от дельфовой строки?

Прочитал. Array Of Char и кусок памяти кратный размеру Сhar'а тоже имеют семантическую схожесть. Вот только строками они не являются.
Re[40]: Коробочные продукты на .NET (НЕ для программистов/ад
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 15.06.09 11:44
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, gandjustas, Вы писали:


H>>>>>Это и есть идентичный алгоритм, а ни какая не самодеятельность. Строки со строками, вполне естественно.

G>>>>Это не идентичный алгоритм. Так как ты сравниваешь мутабельные строки с иммутабельными.
H>>>Platform SDK: This class represents a string-like object whose value is a mutable sequence of characters. Вопросы?
G>>is a mutable sequence of characters прочитал? В чем отличия семантические от дельфовой строки?

H>Прочитал. Array Of Char и кусок памяти кратный размеру Сhar'а тоже имеют семантическую схожесть. Вот только строками они не являются.

Не съезжай.
Re[41]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 15.06.09 11:48
Оценка: -1
Здравствуйте, gandjustas, Вы писали:

H>>>>>>Это и есть идентичный алгоритм, а ни какая не самодеятельность. Строки со строками, вполне естественно.

G>>>>>Это не идентичный алгоритм. Так как ты сравниваешь мутабельные строки с иммутабельными.
H>>>>Platform SDK: This class represents a string-like object whose value is a mutable sequence of characters. Вопросы?
G>>>is a mutable sequence of characters прочитал? В чем отличия семантические от дельфовой строки?

H>>Прочитал. Array Of Char и кусок памяти кратный размеру Сhar'а тоже имеют семантическую схожесть. Вот только строками они не являются.

G>Не съезжай.

Я и не съезжаю. Я показываю несостоятельность твоих аргументов.
Re[42]: Коробочные продукты на .NET (НЕ для программистов/ад
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 15.06.09 11:51
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, gandjustas, Вы писали:


H>>>>>>>Это и есть идентичный алгоритм, а ни какая не самодеятельность. Строки со строками, вполне естественно.

G>>>>>>Это не идентичный алгоритм. Так как ты сравниваешь мутабельные строки с иммутабельными.
H>>>>>Platform SDK: This class represents a string-like object whose value is a mutable sequence of characters. Вопросы?
G>>>>is a mutable sequence of characters прочитал? В чем отличия семантические от дельфовой строки?

H>>>Прочитал. Array Of Char и кусок памяти кратный размеру Сhar'а тоже имеют семантическую схожесть. Вот только строками они не являются.

G>>Не съезжай.

H>Я и не съезжаю.

Съезжаешь, ты на вопрос не ответил.

H>Я показываю несостоятельность твоих аргументов.

Ты пытаешься доказать что StringBuilder не является строкой.
Лично ты можешь так считать, но правдой это не станет.
И не пытайся этот бред кому-либо доказывать.
Re[43]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 15.06.09 12:10
Оценка: -1 :)
Здравствуйте, gandjustas, Вы писали:

H>>>>>>>>Это и есть идентичный алгоритм, а ни какая не самодеятельность. Строки со строками, вполне естественно.

G>>>>>>>Это не идентичный алгоритм. Так как ты сравниваешь мутабельные строки с иммутабельными.
H>>>>>>Platform SDK: This class represents a string-like object whose value is a mutable sequence of characters. Вопросы?
G>>>>>is a mutable sequence of characters прочитал? В чем отличия семантические от дельфовой строки?

H>>>>Прочитал. Array Of Char и кусок памяти кратный размеру Сhar'а тоже имеют семантическую схожесть. Вот только строками они не являются.

G>>>Не съезжай.

H>>Я и не съезжаю.

G>Съезжаешь, ты на вопрос не ответил.

Ответил, ты перечитай.

H>>Я показываю несостоятельность твоих аргументов.

G>Ты пытаешься доказать что StringBuilder не является строкой.
G>Лично ты можешь так считать, но правдой это не станет.
G>И не пытайся этот бред кому-либо доказывать.

Не только я так считаю, об этом даже в Platform SDK написано. "Похож на строку/как строка/(сравнение в общем)" не тождественно "является строкой".
Re[44]: Коробочные продукты на .NET (НЕ для программистов/ад
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 15.06.09 12:26
Оценка: +1
Здравствуйте, hattab, Вы писали:

H>>>Я показываю несостоятельность твоих аргументов.

G>>Ты пытаешься доказать что StringBuilder не является строкой.
G>>Лично ты можешь так считать, но правдой это не станет.
G>>И не пытайся этот бред кому-либо доказывать.
H>Не только я так считаю, об этом даже в Platform SDK написано. "Похож на строку/как строка/(сравнение в общем)" не тождественно "является строкой".
Да ты видимо еще и чушь какую-то читаешь.
В MSDN про StringBuilder написано: Represents a mutable string of characters.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.