mamift / LinqToXsdCore

LinqToXsd ported to .NET Core (targets .NET Standard 2 for generated code and .NET Core 3.1, .NET 5+ for the code generator CLI tool).
Microsoft Public License
41 stars 15 forks source link

Eager/deferred/lazy? #43

Open MarkNicholls opened 2 years ago

MarkNicholls commented 2 years ago

I'm interested in using this to model very large Xmls, but I'm concerned that the library is effectively eagerly reading all the data in, and will take enormous amounts of data. Is it just a thin layer on top of XDocument? (which I think is largely deferred execution, i.e. IEnumberable<>) or is it a bit more eager?

mamift commented 2 years ago

Good question; looking at the technical documentation in the wiki, which is a copy of the technical manual Microsoft published back in 2011 and the source code for the XTypedElement class, it does appear to use XDocument internally for much of its typed-based operations.

I can't give you a 100% certain answer, but I think it's a safe conclusion that it is basically a wrapper for XDocument with code-gen sprinkled on top. I do recall using the library to read some pretty large XML files, some exceeding 500MB in size and I recall the program I was using the library in actually used much less than that at runtime in terms of memory usage.