|
Что за странная оптимизация стектрейса исключения?
|
|||
---|---|---|---|
#18+
Имеем вот такой код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Компилируем, и запускаем из командной строки. Получаем: Код: plaintext
- в стектрейсе только точка вызова в Main (из командной строки - потому что в студии стектрейс всегда будет полным). Хорошо, предполагаем, что компилятор оптимизарует вызовы, и выкидывает методы, которые в себе содержат только вызовы другого метода. Переписываем так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
получаем: Код: plaintext 1. 2. 3. 4.
- нормально, стектрейс полный. А теперь возвращаемся к исходному предположению об оптимизации, и на всякий пожарный смотрим IL-код первого варианта: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
- никакой оптимизации промежуточных вызовов нет, все методы на месте (а компиляция делалась в релизе). Однако факт - первый вариант дает усеченный стектрейс. Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2016, 15:08 |
|
Что за странная оптимизация стектрейса исключения?
|
|||
---|---|---|---|
#18+
WinterGraveyardникакой оптимизации промежуточных вызовов нет, все методы на месте а Jit компилятор как отработал? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2016, 15:48 |
|
Что за странная оптимизация стектрейса исключения?
|
|||
---|---|---|---|
#18+
Изопропила Jit компилятор как отработал? Упс. А про него-то я и не подумал. Задизейблил JIT-оптимизацию, и стектрейс стал полным. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2016, 16:40 |
|
Что за странная оптимизация стектрейса исключения?
|
|||
---|---|---|---|
#18+
WinterGraveyardИзопропила Jit компилятор как отработал? Упс. А про него-то я и не подумал. Задизейблил JIT-оптимизацию, и стектрейс стал полным. Спасибо. JIT оптимизацию ты не задизеблишь! Ты снял галочку "Оптимизировать код" или как там по англицки. С ней. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
без ней Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Особо ниче не поменялось, но JIT`у хватило... https://blogs.msdn.microsoft.com/ruericlippert/2009/06/10/optimize/ ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2016, 16:54 |
|
Что за странная оптимизация стектрейса исключения?
|
|||
---|---|---|---|
#18+
ЕвгенийВJIT оптимизацию ты не задизеблишь! Ты снял галочку "Оптимизировать код" или как там по англицки. Зуб даете? Вообще-то я имел в виду (и сделал) вот это: https://msdn.microsoft.com/en-us/library/9dd8z24x.aspx - и это дало результат, что характерно. Без перекомпиляции проекта и манипуляций с флагами компилятора. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2016, 16:58 |
|
|
start [/forum/topic.php?fid=20&msg=39287336&tid=1400413]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 171ms |
0 / 0 |