Comments 15
Спасибо, с толком, попробую.
Тема интересная, но слишком специализированная.
Думаю, для большинства людей вот этой статьи будет достаточно:
www.javenue.info/post/84 — это своего рода Reflection Cookbook
Думаю, для большинства людей вот этой статьи будет достаточно:
www.javenue.info/post/84 — это своего рода Reflection Cookbook
Интересно было бы посмотреть тоже самое на шарпе… :))
Статья отличная!
Статья отличная!
На C# подобное реализуется с помощью LambdaExpression.Compile(). (http://stackoverflow.com/questions/346523/how-do-i-compile-an-expression-tree-into-a-callable-method-c как quick-start)
Вероятно, там понадобится DynamicMethod, который и будет вызывать target. Подозреваю, что туда добавится некоторая стоимость копирования аргументов по стеку + 1 callvirt.
Вероятно, там понадобится DynamicMethod, который и будет вызывать target. Подозреваю, что туда добавится некоторая стоимость копирования аргументов по стеку + 1 callvirt.
надо было замерять не время 5 000 000 вызовов, а сначала прогнать 5 000 000 вызовов без замера, а только потом замерить. чище результаты получатся
Вызовы рефлекшина такие дорогие, потому что проверяется видимость, секьюрити итп вещи. Вызовы можно ускорить до уровня FastClass, итп просто вызвав у метода метод setAccessible(true). Так что, чтобы получать хороший перформанс в рефлекшине, не зачем так извращаться.
отлично! не думал что setAccessible настолько скажется на производительности, спасибо. Вот что получилось:
Preparing for reflective method access: 2683
Reflective method access: 22028
Preparing for reflective accessible method access: 1746
Reflective accessible method access: 725
Preparing for fast reflective method access: 3530
Fast reflective method access: 1692
Preparing for fast reflective method access (2): 10953
Fast reflective method access (2): 588
Preparing for reflective method access: 2683
Reflective method access: 22028
Preparing for reflective accessible method access: 1746
Reflective accessible method access: 725
Preparing for fast reflective method access: 3530
Fast reflective method access: 1692
Preparing for fast reflective method access (2): 10953
Fast reflective method access (2): 588
интересно, как бы это дело проработало с использованием reflectasm
Sign up to leave a comment.
Делаем reflection быстрой как прямые вызовы