|
ProjectLog
|
|||
---|---|---|---|
#18+
Всем привет! Вижу по форуму катается перекати поле, поэтому, чтобы вы не скучали в отсутствии задачек от школоты и студентов, вот вам мой говнокод : CStackTracer Код: plaintext 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. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154.
CLog Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
CLogTest Код: plaintext 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.
Как не трудно догадаться это трейсер вызовов функций с их логированием. Разумеется в нем нет, по большей части, проверок и контроля ошибок, все сделано ради максимальной простоты и наглядности, т.к. вопрос у меня заключается не в этом. Код вполне рабочий и выводит на экран примерно следующее: outputCLogTest::foo_2 @28, time: 204 [err = 0x00000005 (Access is denied.)] CLogTest::foo_3 @37, time: 204 [err = 0x0000089A (The specified username is invalid.)] CLogTest::foo_2 @27, time: 46 CLogTest::foo_1 @20, time: 110 wWinMain @13, time: 0 Для себя я ставил задачи: - добиться минимального оверхэда кода (потому как это вспомогательный код, а не основной) - добиться максимальной эффективности и удобства использования программистом Код работает, но поскольку я не ассемблерщик меня терзают смутные сомнения: - возможно ли что улучшить или сократить без потери функциональности, удобства, производительности ? - возможно ли избавиться от RAII обертки CLog без потери удобства автовызова StepOut? - оправдано ли использование/таскание по всюду ссылки на CStackTrace? Возможно быстрее будет с указателем? - мне не нравится использовать макросы, но без них получается очень много мусора, который будет скрывать полезный код. Варианты? Другими словами, чтобы вам хотелось оптимизировать/исправить в данном коде ? PS. Отдельная просьба советы сходить на github/stackoverflow/google, взять вот этот log-trace проект и не лохматить бабушку оставить при себе -------------------------------------------------------------- o(O_O)o ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 13:59 |
|
|
start [/forum/topic.php?fid=57&gotonew=1&tid=2017741]: |
0ms |
get settings: |
11ms |
get forum list: |
28ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
8ms |
get first new msg: |
34ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 254ms |
total: | 429ms |
0 / 0 |