Hi @Jack Huser,
I assume you would agree it is fair to compare apples to apples
but not horse coaches to formula-1 cars.


Being proud that I never lost a benchmark by speed I rewrote your code
that is nice to read and maintain but not very efficient, going for something
more speedy to show the limits and then checked it against your class.
My test file has only 47MB containing 181566 lines.

DEMO>write ##class(JUH.Test).ReadFile(file)
execution: 214.931024
1
DEMO>write ##class(JUH.Test).ReadQuick(file)
execution: .753696
lines: 181566
1
DEMO>write .753696/214.931024*100_" %"
.3506687801385062028 %

I think 0.35% is quite an eye catcher.

And his is the class:

 ClassMethod ReadQuick(strINReadFile As %String = "") As %Status
 {
  open strINReadFile::1 
  else  write "Missing File",! quit '$$$OK 
  set eof=##class(%SYSTEM.Process).SetZEOF(1)
  use strINReadFile
  set time1=$zh 
  for line=0:1 {
    read strBuffer if $zeof set diff=$zh-time1 quit
    // do something with strBuffer
  }
  close strINReadFile
  do ##class(%SYSTEM.Process).SetZEOF(eof)
  write !,"execution: "_diff,!,"lines: ",line,!
  quit $$$OK
 }

I just couldn't resist my nature.

I did further investigations on 'broken' input files and placed a related issue
https://github.com/MakarovS96/cache-tort-git/issues/8
It happened a little bit by accident but I found this a possible realistic scenario that explains
why the problem occurs every now and then.  You may argue this is bad handling by user.
Accepted. But not unlikely.

I found this situation:

  • I have a project. with several packages and classes
  • I deleted a class BUT the PACKAGE was not saved and didn't reflect the change
  • From ClassMethod ExportProject(project ,1) I get this strange XML for the deleted class c:\temp\TEST\dc\MyCompany\EmployeRegister1.cls.xml <?xml version="1.0" encoding="UTF-8"?> <Export generator="IRIS" version="26"> </Export>
  • now I need a GIT expert to analyze what happens with this incomplete input.
  • my assumption: according to the file name there is an empty entry of type CLS named /dc/MyCompany/EmployeRegister1.cls.xml or similar
  • when ist is restored it may cause the described problem togehter with the reported bug in $system.OBJ.Load() 

Finally, the docker image now builds OK and contains all required classes & all globals.
( + also the bug in dc.script.Genre.cls was fixed) 
Connection to local PowerBi now works and shows the expected images.
Thanks for fixing it.

I was somewhat surprised that IRIS Analytics was not required at all since there
was no Cube nor Pivot nor Dashboard. I built it myself just using dc.dc.bi.PopSongs.

OK. PowerBI graphics look better.
But here is not the place to comment on ZEN graphics.