Some of you may know this, some of you may not. LambdaCore is the engine the game runs on. LambdaMOO is a really old social MOO. They are still around. They used to do regular dumps of their database and put them out there for people to use as the basis for their own games.
They did a lot of really cool code work and the developers / maintainers of LambdaCore were the ones writing a lot of that code. We use a lot of this code in our system at low levels because at it's core Sindome was built on top of one of the LambdaMOO dumps, and as time went on, we moved additional changes over that they released. All that happened way long ago because the last dump they did was in like 2002 or something.
What I've found is that there are a lot of low level things that are built into our core that we never use. We kept them around because we might have used them or didn't know where they were integrated or didn't have time to remove them.
How that the game is growing larger, I am finding the time to prune some of these unused bits of code. This thread will serve as a log of things I've done and the number of ticks we saved because of it.
#1: Removing the .paranoid and .gaglist check from #6:tell
This is a simple check that takes 8 ticks. No one is on the .gaglist and no one is .paranoid. I don't even know what .paranoid is really used for on LambdaMOO. Maybe keeping a log of the most recent X number of messages you've been told? It's unclear, but we don't need it. It's a social moo feature.
Now, saving 8 ticks doesn't seem like a lot. However, let's look at the math. I tested on our dev server and me doing basically nothing, caused 256 tells in 5 minutes.
If it was the actual MOO that number would be much higher for me.
Now, let's estimate that number. Say there are 50 players online, and each one gets 50 tells a minute, every minute, the entire day. This accounts for the fact that sometimes there are less people on, or more people on. Let's figure out how many tells that is a year. Also, please consider this a CONSERVATIVE estimate. There are probably many more than 50 tells a minute for the average player.
50 * 50 * 60 * 24 * 365 = 1,314,000,000
1.3 BILLION tells a year. Holy crap. That's a lot of tells. But, consider that tells are basically you receiving one line of text from the MOO. Descriptions are multiple lines and therefore multiple tells. You type @stats? That's like 50 tells right there. So again conservative.
Now, wait a second. We save --> 8 <--- ticks for each time tell is used.
That's... 10,512,000,000 ticks a year we save with this very straightforward change.
Now, ticks are not really a measurement of time. It's hard to quantify how long it takes to execute a tick. Different computers will execute a tick faster or slower.
However, to give you an idea of how it works, each line of code will take 1 or more ticks. Doing...
a = 0; //1 tick
if (a > 1) // 2 ticks
So, on our development server I told the moo to loop over every number been 1 and 2.1 billion. Just to see how long it would take. I did that 16 hours ago. It's still running. I don't know when it will finish.
This change means commands will execute faster, and the MOO will have more resources available. It's a good change. More to come.