Pull to refresh

Comments 15

Тема интересная, но слишком специализированная.
Думаю, для большинства людей вот этой статьи будет достаточно:
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.
На шарпе раз, используя System.Reflection.Emit и Dynamic Methods. И два используя C# compiler as a service в моно, и Nemerle's compiler в mono и .Net.
надо было замерять не время 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
UFO just landed and posted this here
Спасибо, по настоящему полезный комментарий. Есть несколько хороших моментов в этой методике. Главный — cglib действительно быстрее reflection, а значит я не зря переводит всё это :)
интересно, как бы это дело проработало с использованием reflectasm
UFO just landed and posted this here
Sign up to leave a comment.

Articles

Change theme settings