Open XVilka opened 1 year ago
Hey @XVilka, I'd like to work on this issue. As I've seen the #3775 issue. I think I can solve this. I will ask for the help from you, if needed.
@AniketNS go for it, send a PR
Ok. I'll try to do this @XVilka. May I trouble you, If I need any help?
@AniketNS you can try to do the reflines
one.
Similar to https://github.com/rizinorg/rizin/issues/3775 some data is populated only once (or updated very infrequently) but uses
RzList
which is inefficient for this case:RzAnalysisFunction
RzList /*<RzAnalysisBlock *>*/ *bbs; // TODO: should be RzPVector
RzList /*<char *>*/ *imports; // maybe bound to class?
RzAnalysisSwitchOp
RzList /*<RzAnalysisCaseOp *>*/ *cases;
RzAnalysis
RzList /*<RzAnalysisPlugin *>*/ *plugins;
RzList /*<char *>*/ *imports; // global imports
RzList /*<leaddr_pair *>*/ *leaddrs;
RzAnalysisPlugin
RzList /*<RzSearchKeyword *>*/ *(*preludes)(RzAnalysis *analysis);
Reflines
RzList /*<RzAnalysisRefline *>*/rz_analysis_refines_get()
- should improve disassembly speed because heavily used inlibrz/core/disasm.c
I recommend starting from the
cases
member ofRzAnalysisSwitchOp
since it will likely give the biggest performance/memory impact because used most often.