Нет покоя
шибанутымАвтор: Sinix
Дата: 31.03.16
var s = "Hello"; // GetSomeString();
var len= s?.Length;
var maxLen = 5;
var result = maxLen.CompareTo(len);
...
Что не так-то?
Как всегда, с цыферками пожалуйста.
Здравствуйте, Sinix, Вы писали:
S>Что не так-то?
| Спойлер |
| Навскидку, боксинг. |
| |
S>Как всегда, с цыферками пожалуйста.
Минуточку... вот
Repeat: 10 000 000
------------------
Original: Elapsed: 545 ms, GC 0/1/2: 57/0/0
Optimized: Elapsed: 11 ms, GC 0/1/2: 0/0/0
| Спойлер |
| Все верно, боксинг вызван тем, что используется перегрузка int.CompareTo(object).
PS.
Во втором варианте использовался вот такой код: maxLen.CompareTo(len.HasValue ? len.Value : 0)
Если же использовать вот такой: maxLen.CompareTo(len.GetValueOrDefault()) то время уже 4-5 ms |
| |
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Здравствуйте, Sinix, Вы писали:
А вообще тему стоило назвать по другому: троллим любителей писать в нотепаде
Потому как только вбив код в студию, соответствующее место было подчеркнуто maxLen.CompareTo(
len) с сообщением: Boxing allocation: Conversion from value type 'int?' to reference type 'object'
ЗЫ. Плагин называется
Heap Allocations Viewer
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Здравствуйте, rameel, Вы писали:
R>Если же использовать вот такой: ...
А померь ещё с Comparer<int?> плиз. Интересно насколько результаты совпадать будут.
R>ЗЫ. Плагин называется Heap Allocations Viewer
Ух ты, уже отвечают раньше, чем дополнительный вопрос задам
Ок, раз интерес есть, буду новые примеры периодически скидывать.
Здравствуйте, Sinix, Вы писали:
S>А померь ещё с Comparer<int?> плиз. Интересно насколько результаты совпадать будут.
Repeat: 10 000 000
------------------
Original: Elapsed: 531 ms, GC 0/1/2: 57/0/0
Optimized: Elapsed: 12 ms, GC 0/1/2: 0/0/0
Comparer<int?>: Elapsed: 65 ms, GC 0/1/2: 0/0/0
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>