Вопрос: AgentFire- обратись к дортору неадекват | Добавлено: 05.02.11 21:25 |
Автор вопроса: ![]() |
Ответы | Всего ответов: 75 |
Номер ответа: 16 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #16 | Добавлено: 06.02.11 08:09 |
Но если String.Empty и "" это одно и тоже, тогда почему алгоритм например в цикле с использование "" выполняется быстрее чем String.Empty?
Чтоб говорить почему в каком-то алгоритме что-то выполняется быстрее или медленнее, нужно привести полный код этого алгоритма и описать, в каких условиях что-то выполняется быстрее, а что медленнее. Я, например, могу привести код некого алгоритма (для примера возьмем не очень оптимальный алгоритм сортировки вставкой, который, однако, будет показывать высокую скорость, так как наш массив уже является отсортированным) public static void Sort(string[] array)
{ for (int j = 1; j < array.Length; j++) { string key = array[j]; int i = j - 1; while (i >= 0 && array[i].CompareTo(key) > 0) { array[i + 1] = array[i]; i--; } array[i + 1] = key; } } Вот вызывающий код static void Main(string[] args)
{ const int ARRAY_SIZE = 20000000; const int ITERATIONS_COUNT = 10; string[] array = new string[ARRAY_SIZE]; Console.WriteLine(@"""""" ![]() for (int i = 0; i < array.Length; i++) array[i] = ""; ![]() for (int i = 0; i < ITERATIONS_COUNT; i++) { ![]() Sort(array); Console.WriteLine("{0}: {1}", i, DateTime.Now.Subtract(start)); } Console.WriteLine("Avg: {0}", new TimeSpan(DateTime.Now.Subtract(firstStart).Ticks / ITERATIONS_COUNT)); Console.WriteLine("String.Empty" ![]() for (int i = 0; i < array.Length; i++) array[i] = String.Empty; firstStart = DateTime.Now; for (int i = 0; i < 10; i++) { ![]() Sort(array); Console.WriteLine("{0}: {1}", i, DateTime.Now.Subtract(start)); } Console.WriteLine("Avg: {0}", new TimeSpan(DateTime.Now.Subtract(firstStart).Ticks / ITERATIONS_COUNT)); Console.ReadLine(); } Вот результат (Intel Core 2 Duo E6750, 6 GB RAM, 400GB + 1TB HDD, GeForce 9600GT, Windows 7, VS 2010, .NET Framework 4.0, сборка Release, запуск без отладчика) ""
0: 00:00:02.5701470 1: 00:00:02.5501459 2: 00:00:02.5291447 3: 00:00:02.5321448 4: 00:00:02.5221442 5: 00:00:02.5441455 6: 00:00:02.5291447 7: 00:00:02.5241444 8: 00:00:02.6141495 9: 00:00:02.7481572 Avg: 00:00:02.5665468 String.Empty 0: 00:00:02.6211499 1: 00:00:02.5181440 2: 00:00:02.5211442 3: 00:00:02.5501458 4: 00:00:02.5221443 5: 00:00:02.5301447 6: 00:00:02.5281446 7: 00:00:02.5421454 8: 00:00:02.5261445 9: 00:00:02.5221442 Avg: 00:00:02.5385451 Из этого примера хорошо видно что нет никакой разницы в скорости работы |
Номер ответа: 17 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #17 | Добавлено: 06.02.11 08:11 |
Еще одна попытка...
|
Номер ответа: 18 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #18 | Добавлено: 06.02.11 08:21 |
udn79 пишет:
Ты откуда велез доктор речь шла о VB6, однин AgentFire стал говорить о интернирование строк, да откуда там вообще это взялось, ты то хоть подумал? Я вообще не знаю с чего у вас спор начался. Вы хотели String.Empty, я вам его дал. Ко мне какие претензии? Класс String это дотнетовский класс, String.Empty это поле класса String. В VB6 такой конструкции не было, насколько я помню, поэтому не нужно сюда шестерку приплетать, а если периплетаешь то четче указывай в каком контексте и зачем. udn79 пишет:
Когда пишу свое мнение ты переворачиваешь и выдаешь это за утверждение. Ты пишешь "мнение", что String.Empty является "директивой компиляции" (цитирую дословно, если уж хочешь). Я тебе объясняю что String.Empty не является ею (директивой), а является обычным полем класса String и ничем иным. В чем проблема? Ну не директива это, что тут поделаешь.... udn79 пишет:
Когда у вас просят пример я только вижу, что вы умеете писать это слово дотнет и больше ничего. Пожалуйста, выше пример лежит. |
Номер ответа: 19 Автор ответа: ![]() ![]() ICQ: 419841508 Вопросов: 9 Ответов: 100 |
Web-сайт: Профиль | Цитата | #19 | Добавлено: 06.02.11 10:53 |
Artyom, хорош) |
Номер ответа: 20 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 95 |
Профиль | Цитата | #20 | Добавлено: 06.02.11 13:46 |
Да ты меня убедил, когда использовал перед использованием String.Empty, проверил еще и длину строки array.Length, красавец))) |
Номер ответа: 21 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 95 |
Профиль | Цитата | #21 | Добавлено: 06.02.11 13:49 |
Artyom ты откуда вылез доктор, эта фраза здесь уже звучала, если скролинг не работает, я буду твоим навигатором
http://vbnet.ru/forum/show.aspx?id=213868&tolastpage=true#18
|
Номер ответа: 22 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 95 |
Профиль | Цитата | #22 | Добавлено: 06.02.11 13:57 |
Извини, но не та ссылка, но ты тупишь или прикидываешься, ты говоришь что не знаешь о чем спор и сам же его цитируешь
udn79 пишет: Ты откуда велез доктор речь шла о VB6, однин AgentFire стал говорить о интернирование строк, да откуда там вообще это взялось, ты то хоть подумал? ты же читал это http://vbnet.ru/forum/show.aspx?id=213868&page=1#12
Ты же читал цитируешь. Сам обьект спора возник на странице http://www.vbnet.ru/forum/show.aspx?id=213291&page=2
|
Номер ответа: 23 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 95 |
Профиль | Цитата | #23 | Добавлено: 06.02.11 13:59 |
В порыве я тоже могу бред нести типо следующего
Да ты меня убедил, когда использовал перед использованием String.Empty, проверил еще и длину строки array.Length, красавец)))
Но я хоть могу признать, что здесь неправ, и сказал чушь. |
Номер ответа: 24 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #24 | Добавлено: 06.02.11 14:38 |
Чувак, я тебе привел код который показывает, что твое утверждение по поводу разницы между String.Empty и "" не соответствует действительности. Это не потому что я такой плохой, а потому что так оно и есть. Если ты с этим не согласен, приведи код, который покажет что разница между String.Empty и "" есть, мы посмотрим и объясним, есть ли там разница на самом деле, и если есть, то почему.
По поводу спора byte[] vs string могу сказать, что есть разница хотя бы в том, что в byte[] один элемент занимает 1 байт, а в string - 2 байта. Вопросы? udn79 пишет:
Да ты меня убедил, когда использовал перед использованием String.Empty, проверил еще и длину строки array.Length, красавец))) Ты это имеешь в виду?
Информирую о том что 1) Это стандартный синтаксис циклов в C# 2) Это array.length это не длина строки, а кол-во элементов в массиве array. Если считаешь что мой код был необъективным, говори в чем он необъективный, и давай пример объективного сравнения "" и String.Empty Во избежании недоразумений рекомендую для начала ознакомиться с другим моим сообщением http://vbnet.ru/forum/show.aspx?id=213471&page=3#39 Если ты готов на таком уровне вести дискуссию, мы можем продолжить, если нет, то мне будет очень скучно в этом топике тебе объяснять прописные истины. |
Номер ответа: 25 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 95 |
Профиль | Цитата | #25 | Добавлено: 06.02.11 14:48 |
В порыве я тоже могу бред нести типо следующего
Да ты меня убедил, когда использовал перед использованием String.Empty, проверил еще и длину строки array.Length, красавец))) Но я хоть могу признать, что здесь неправ, и сказал чушь. Ты читать умеешь, там написано, что бред |
Номер ответа: 26 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #26 | Добавлено: 06.02.11 14:50 |
ппц, только читать и успеваю ![]() udn79, признаешь фейл? |
Номер ответа: 27 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 95 |
Профиль | Цитата | #27 | Добавлено: 06.02.11 15:04 |
Ты издеваешься, компилятор не такой тупой, чтобы записывать в пустой массив
Пустые значения, даже на уровне компиляции он отбросит не нужные операции. Мне что еще нужно объяснять, что такое операции? If []==String.Empty // где [] Case []==String.Empty // сравниваемое значение и т.д. думаю ключевые слова ты должен и сам знать. Твой код фулельный, основанный на незнание, даже основ процесса компиляции |
Номер ответа: 28 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 95 |
Профиль | Цитата | #28 | Добавлено: 06.02.11 15:33 |
Есть "IDA pro" и "olly debug", еще есть книги по "искусству дизассемблирования" и "Образ мышления дизассемблера IDA",
В которых перечислены если не все то очень многие: алгоритмы, процессы и много всего прочего. Можно сомневаться, что там написано, но каждый описанный алгоритм выполняется под отладчиком, для изучения работы с отладчиком. Вот таким доводам я верю, что проверена и сам можешь проверить. Но слушать от делетантов, бредовые высказывания вычитанные непонятно откуда, неправильно написанные. Да еще хвастающегося своим ниже среднего ПК, увы не по мне. |
Номер ответа: 29 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #29 | Добавлено: 06.02.11 15:46 |
Есть "IDA pro" и "olly debug", еще есть книги по "искусству дизассемблирования" и "Образ мышления дизассемблера IDA",
В которых перечислены если не все то очень многие: алгоритмы, процессы и много всего прочего. Можно сомневаться, что там написано, но каждый описанный алгоритм выполняется под отладчиком, для изучения работы с отладчиком. Вот таким доводам я верю, что проверена и сам можешь проверить. Так я тебе и привел код, который ты сам можешь проверить, проверь. Что мешает? Запусти, подключись отладчиком, профайлером, вытяни машинный код, расскажи нам, где что происходит. Но слушать от делетантов, бредовые высказывания вычитанные непонятно откуда, неправильно написанные.
дЕлетант, если тебя так беспокоят люди, допускающие ошибки в русском языке, то начни улучшать ситуацию с себя ![]() Да еще хвастающегося своим ниже среднего ПК, увы не по мне.
Кто тут хвастается? Стандартная практика, когда с результатами тестов выкладывюатся и условия, в которых они запускались, чтоб другие люди могли запустить и сравнить со своими. Компьютер ниже среднего, а больше пока и не надо, для работы хватает с головой. Не нравится мой комп, вот тебе другой. Intel Core i7 930, 12 GB RAM, Windows Server 2008 R2
|
Номер ответа: 30 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #30 | Добавлено: 06.02.11 15:54 |
udn79 пишет:
Мне что еще нужно объяснять, что такое операции? If []==String.Empty // где [] Case []==String.Empty // сравниваемое значение и т.д. думаю ключевые слова ты должен и сам знать. А чем String.CompareTo тебе не операция? |
|