Interactive satellite map o1f the city with places, descriptions and comments.
Links. Artspace Sarah Holl Studio The Official Web Site of Artist Sarah Holl; luminati Gallery luminati Gallery News and Information; Sabino Pottery The web site of sculptor/potter Janet K. Burner. Tina Holl The web site of. IKVM. NET Weblog. Last time I mentioned that with the integration of Open. JDK 8u. 45 Method. Handle performance went from awful to unusable. That was pretty literal as the JSR 2. I regularly run went from taking about 8 minutes to more than 3. Using sophisticated profiling techniques (pressing Ctrl- Break a few times) I determined that a big part of the problem was Method. Handle. as. Type(). So I wrote a microbenchmark: IKVM 8. IKVM 8. 1. 5. 63. Type. permutations(1)2. Type. permutations(2)2. The numbers are times in milliseconds. Clearly not a good trend. I did not investigate deeply what changed in Open. JDK, but after looking at the 8u. Method. Handles were being created. So I rewrote as. Type to create a single Lambda. Form to do all the work at once. This improved the performance a bit, but the disturbing increase in time for the second iteration was still there. Once again I decided not to investigate the root cause of this, but simply to assume that it was because of anonymous type creation (the CLR has no anonymous types and creating a type is relatively expensive). Avoiding anonymous type creation turned out to be easy (well, the high level design was easy, the actual implementation took a lot more time). I just had to replace the Lambda. Form compiler. There is a single method that represents the exact point where I can come in and change the implementation: static Member. Name generate. Customized. Code(Lambda. Form form, Method. Type invoker. Type) { .. In Open. JDK this method compiles the Lambda. Form into a static method in an anonymous class and returns a Member. Name that points to the static method. All I had to do was replace this method with my own implementation that directly generates a . NET Dynamic. Method. As I said before, the idea was simple, actually getting the implementation correct took a couple of weeks (part time). With both these optimizations in place, Method. Handle performance is back to awful (actually, it is less afwul than it was before): IKVM 8. IKVM 8. 1. 5. 63. IKVM 8. 1. 5. 65. Type. permutations(1)2. Type. permutations(2)2. The running time of the JSR 2. So I was satisfied. There are many more opportunities to improve the Method. Handle performance on IKVM, but so far no IKVM user has complained about it, so it is not a priority. Note that Java 8 lambdas are not implemented using Method. Handles on IKVM. Changes: Fixed performance bug. Base type of java. Object was not cached. Untangled Type. Wrapper. Finish() from member linking to improve Finish performance for already compiled types. Improved Method. Handle. Type() performance by directly creating a single Lambda. Form to do the conversion, instead of creating various intermediate forms (and Method. Handles). Make non- public final methods defined in map. Optimized Lambda. Form compiler. IKVM. Reflection: Added Type.__Get. Generic. Parameter. Constraint. Custom. Modifiers() API. Binaries available here: ikvmbin- 8. Scargo. Pottery. com. Hours of Operation. Open Every Day 1.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
October 2016
Categories |