diff2html icon indicating copy to clipboard operation
diff2html copied to clipboard

Avoid an excessive DOM size

Open wisniewski94 opened this issue 2 years ago • 3 comments

Step 1: Describe the problem:

Steps to reproduce:

  1. Open Demo
  2. Run the lighthouse performance audit

Observed Results:

  • You should see Avoid an excessive DOM size (3,458 elements) error

This is because of the use of the HTML tables which add a few layers of depth to the DOM tree. With more complex usages this number can grow up to 10k+. I don't think this problem can be completely solved because highlight.js adds a lot of HTML elements but it should be possible to lower this number a bit by avoiding the <table> element. Proof of concept is browser visual studio code diff which uses only a combination of divs and spans.

I am going to spend some time on this issue to see what are potential cons of this approach.

wisniewski94 avatar May 03 '22 18:05 wisniewski94

👋 let me know how it is going and if you can find some improvements we can do.

Honestly to get to this state it took a lot of trial and error. Frontend is not my main language and it took me a while. 😓

If you have improvements we can do, they are very welcome. I can help test if they break something.

rtfpessoa avatar May 07 '22 20:05 rtfpessoa

I have to display a diff that comes from other changes. I can't guarantee that it will be small.

Right now, with a sizable diff (lots of files, specifically), loading diff2html is really slow. I wonder if the element count has something to do with it.

Any progress on this?

brandonsturgeon avatar Jun 09 '23 00:06 brandonsturgeon

@brandonsturgeon I have paused the work on this due to higher priorities in other projects. I could go down with the count slightly but the further I went the more hacks I implemented with which I did not feel ok and ultimately lost motivation for a moment. I guess if we could break it into steps of minor improvements, the progress of this task would be better. What do you think?

wisniewski94 avatar Jun 09 '23 11:06 wisniewski94