Как стать автором
Обновить

Комментарии 8

Вы все еще меряете время через DateTime.Now?
Тогда мы идем к вам!

Рекомендации для написания бенчмарков: habrahabr.ru/post/191636
Спасибо за комментарий, с удовольствием прочитал статью. Стал немного умнее)
На самом деле многие из этих рекомендаций я выполнил при запуске тестов, попробую выполнить все и еще раз выложу результаты. Спасибо!
И вот что получилось в итоге:

Результаты
Cache warming results:
00:00:00.0505219
00:00:00.0491484
00:00:00.0527804
00:00:00.0586028
00:00:00.0595744
00:00:00.0573599
00:00:00.0678498
00:00:00.0560197
00:00:00.0591139
00:00:00.0382205
00:00:00.0602378
00:00:00.0862110
00:00:00.0632895
00:00:00.0584091
00:00:00.0556713
00:00:00.0572194
00:00:00.0544349
00:00:00.0750407
00:00:00.0579586
00:00:00.0561487

Test results:
00:00:00.0640218
00:00:00.0558972
00:00:00.0612732
00:00:00.0560300
00:00:00.0547193
00:00:00.0556158
00:00:00.0558210
00:00:00.0554421
00:00:00.0632168
00:00:00.0611355
00:00:00.0539173
00:00:00.0594863
00:00:00.0549896
00:00:00.0585462
00:00:00.0598485
00:00:00.0586522
00:00:00.0560457
00:00:00.0568806
00:00:00.0784523
00:00:00.0521756

Milliseconds need for 10KK boxing operations: 58,60835



Да, немного отличаются.
Да-да, для этого случая еще и Resharper еще заботливо говорит, что вызов ToString() является избыточным.
А если начать разбираться, то без этого вызова за кадром происходит много нехорошего: а именно, вместо Concat'а строк будет Concat object'ов, что плохо.
Мм, да все новое — хорошо забытое старое!..
Да, я на эту статью не натыкался. Посыпаю голову пеплом.
Это значимый тип данных. Значение переменной valType будет храниться в стэке.

Дальше можно не читать.

100 раз говорили: значимые типы почти всегда размещаются в куче, т.к. являются полями классов. А на стеке размещаются только локальные переменные значимого типа. А ссылочные типы далеко не всегда размещаются в куче, см. stackalloc. Поэтому это утверждение не просто ошибочное, а в корне неверное.

Эрик давно уже статью целую наваял: если бы это было так, были бы «стековые» и «кучевые» типы данных (stack and heap values), а не «значимые» и «ссылочные».

Советую ознакомиться:

blogs.msdn.com/b/ericlippert/archive/2009/04/27/the-stack-is-an-implementation-detail.aspx

blogs.msdn.com/b/ericlippert/archive/2010/09/30/the-truth-about-value-types.aspx
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории