Alice
2020 年7 月 1 日 01:47
1
Julia1.0.5中,利用Juno中提示的语句进行调试。
先打断点,再用提示箭头跳转到selection line,但调试速度巨慢无比,需要等很久很久才跳到选定行。
请问各位大侠,是这个版本调试就这么慢吗?有木有什么方法能破?非常感谢
Juno.jl 的开发团队弃坑了,换 VSCode 吧
Attention : We have decided to join forces with the Julia extension for VSCode . As such, this Atom-based plugin is effectively in “maintenance-only mode” and we expect to only work on bug fixes in the future.
1.0.5 可能有点老,换新的 Julia 稳定版,不然有些包就是老版的。
1 个赞
opened 11:44AM - 22 Mar 19 UTC
performance
In my initial performance work, the big 3 improvements were local method tables … (`framecode.methodtables`), reusing framedata (the `junk` mechanism), and getting rid of runtime dispatch internally within the interpreter (by manual union-splitting, aka, `if isa(x, ConcreteType)...`).
Some possible future improvements:
- [ ] Recent changes diving into `Core._apply`, `Core._apply_latest`, and `invoke` hurt performance. Perhaps some of that might be clawed back by moving more of this work into `optimize!`?
- [x] `ccall`s are slow. I just pushed a `teh/compiled_ccall` that contains an old attempt to create one compiled function per `ccall`. I was most interested in seeing whether it would circumvent #28 (it didn't seem to), but I don't think I looked at its runtime implications (esp on a ccall-heavy workload). I suspect that branch is pretty close to usable, if anyone wants to pick it up and run with it.
- [ ] specifically look for calls to `iterate` and do something special, a.k.a., (1) determine whether `iterate` could possibly hit a breakpoint or error (if not then you're allowed to play tricks), (2) see if you can determine whether the loop will be long, and if so (3) pass the iterator and frame to a special `run_loop` function. That would have to compile for each iterator type, so is worth doing only if the loop is long. But you would save the time spent diving in and out of `iterate`, and that could be quite helpful.
- [x] apply similar treatment to arrayrefs. Even our builtin handling of `arrayref` could be improved by separately treating small dimensions (e.g., `if nargs == 1 ... elseif nargs == 2 ... elseif nargs == 3 ... else <varargs version> end`.
Obviously spending some time with ProfileView will be useful. I did a ton of that at the beginning and fixed most everything I that I noticed. But I haven't done it in a while and we may have regressed in places as we expanded our functionality.
这个的问题换编辑器也没用的,建议用printf(@info )大法
也可以试试这个compiled-mode模式