japhb I remembered that MUGS-UI-CLI doesn't flush the import buffer when it starts up, so you can get real timing for the "adventure startup benchmark" with: 00:38
time (echo quit | mugs-cli adventure)
real0m1.765s
user0m1.586s
sys0m0.280s
Looks like a bit under 1.8s. I forgot to account for my slow-ass keyboard when considering the ^C delay. (For ergonomics, it's fantastic. For input latency, not so much ...) 00:53
greenfork real0m4.161s 07:20
user0m4.867s
sys0m0.598s
This is for me with time (echo quit | mugs-cli adventure) 07:21
I will then ask someone who understands --profile, maybe I will be able to debug that. I thought about inter-thread communication too as a source 07:22
By the way, when I run mugs-cli without specifying a server, the server is run in a thread or in a process?
I assume that UI+Client are run together? Or it is also no the case 07:23
And thanks on the primer for the private variables, I have a much better understanding of them now, regarding the general philosophy too 07:24
japhb :+1: 17:18
Yeah, UI and Client outbound run together, though Client *inbound* (just like Server inbound) runs in its own listener thread. 17:19
When you run mugs-cli and it spawns its own server, it does so using a separate thread and avoids using TCP/IP (it uses inter-thread communication instead) *but* it still uses the same encoding/decoding for the data packets, to ensure that that doesn't get broken, and to make it easier to analyze performance of that in isolation from the network. 17:21
$ faster 4.161 1.765 17:23
57.58% less time
2.36 times faster
Ouch
That just doesn't seem reasonable to me.
Makes me wonder if Rakudo Star was compiled with optimizations turned off or for generic (two decade old) CPUs or something 17:25
greenfork I will soon try out the newer version, will see if this is connected to the Star distribution 17:26
japhb Sounds good, thank you! 17:27
greenfork One more about MUGS: when there's some error in my server code for a new game, and I run it with mugs-cli <my-game-name>, I get an error like this
Died with the exception: Request invalid: Game type 'rrp' is unknown
And several stack traces pointing to MUGS::App::LocalUI 17:28
Can I improve error reporting somehow? This one happened because I referenced a variable that was not defined in my server code
japhb Oh, syntax errors in the game code? That may be causing a failure to load the plugin.
I'm using a plugin-loader module as a dependency. I'll have to take a look at what can be done about the failure mode there. 17:29
But for myself, I usually have a t/00-use.rakutest that consists of just use'ing all the modules in my distro in dependency order, and I run that test *often*, with verbose test output. It's a canary for "oops, you broke one of the modules not actually involved in startup". 17:30
greenfork Sounds nice, I will do that too 17:31
japhb If you have an editor that can run tests on file save, that's probably a good thing to hook up to at least the use test. 17:54
greenfork Hmm this is an interesting idea 18:01