Alphare added a comment.
Alphare marked 4 inline comments as done.

  > Do you have some benchmark number compared to simpler (and dumb) approaches
  > such as caching PyList/Dict representation?
  
  I don't have any benchmarks as of yet, sorry.
  
  > I heard boxing a PyObject has measurable cost,
  
  Do you have a link to any benchmarks? I'd be interested.
  
  > so we might even want to keep the entire data backed by PyObjects 
  > depending on how frequently the data will be exposed to Python world.
  
  How would we decouple hg-core and hg-cpython then? If Python expects 
references to big objects (within `propertycache` for instance), we still need 
to exchange a fair bit of data from Rust if Rust does the heavy lifting.
  
  > (I don't have expertise to comment on the soundness of the proposed ref 
handling
  > business, and this patch is too big for me to review, sorry.)
  
  I understand. I am planning to split the change into smaller bits, but I was 
hoping to get some advice beforehand to reduce noise and history management 
work. You already have helped me a lot, so has @kevincox.

INLINE COMMENTS

> kevincox wrote in dirstate_map.rs:245
> This function seems quite odd. Why isn't dirs always set? It seems like you 
> do some initialization then set it. However does this mean that this class 
> has a different set of allowed methods before and after dirs is set?
> 
> If this is the case you should either A) Add assertions at the top of every 
> method to ensure they are only called at allowed times or B) split out the 
> initialization into a builder type.
> 
> Otherwise why can't `dirs` be set at initialization.

I agree that this pattern is quite unsatisfactory. The Python implementation 
uses a lot of lazy properties to omit some sub data structures until (or 
unless) they are really needed. This proved quite awkward to replicate, but 
there has to be a better solution to this problem. 
Your idea of using a builder pattern is tempting, but I don't know how it'll 
play out with Python, I will have to try.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D6594/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D6594

To: Alphare, #hg-reviewers
Cc: yuja, durin42, kevincox, mjpieters, mercurial-devel
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to