Seifert69 / DikuMUD3

DikuMUD III using HTML and websockets.
GNU Lesser General Public License v2.1
192 stars 48 forks source link

Convert dil function array to a map #343

Closed bluedreamer closed 2 years ago

bluedreamer commented 2 years ago

Now will assert if the function ID doesn't exist in the map

Seifert69 commented 2 years ago

Great. Yes that's to be expected. It's simply because there are so many more programs running and the lists are a lot longer to traverse. So everything takes longer.

On Wed, Jun 1, 2022, 19:57 Adrian @.***> wrote:

@.**** commented on this pull request.

In vme/src/dilrun.cpp https://github.com/Seifert69/DikuMUD3/pull/343#discussion_r887456405:

@@ -1010,7 +1015,16 @@ static int check_interrupt(dilprg *prg) (prg)->fp->pc++; (prg)->fp->tmpl->nInstructions++; assert(prg->fp->pc <= &(prg->fp->tmpl->core[prg->fp->tmpl->coresz]));

  • (g_dilfe_func[*(prg->fp->pc - 1)].func(prg));
  • try
  • {
  • auto dil_function = g_dilfe_func.at(*(prg->fp->pc - 1));

Absolutely, I will profile it and get before and afters. With 200+ items I really doubt its even going to show up in the profiles but proving it is better.

As a side thing, if I load all the zones - my tests with wtime timewarp don't run anywhere near as fast as it used too with just the project zones. Is that expected, because of the increase in the zones.

— Reply to this email directly, view it on GitHub https://github.com/Seifert69/DikuMUD3/pull/343#discussion_r887456405, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOOOMXXKXKAWI7EHEKRV7QLVNAPIFANCNFSM5XSYQOTQ . You are receiving this because you commented.Message ID: @.***>

Seifert69 commented 2 years ago

Another perhaps simpler test would be to time the overhead of 1Bn calls to map.

On Wed, Jun 1, 2022, 20:02 Michael Seifert @.***> wrote:

Great. Yes that's to be expected. It's simply because there are so many more programs running and the lists are a lot longer to traverse. So everything takes longer.

On Wed, Jun 1, 2022, 19:57 Adrian @.***> wrote:

@.**** commented on this pull request.

In vme/src/dilrun.cpp https://github.com/Seifert69/DikuMUD3/pull/343#discussion_r887456405:

@@ -1010,7 +1015,16 @@ static int check_interrupt(dilprg *prg) (prg)->fp->pc++; (prg)->fp->tmpl->nInstructions++; assert(prg->fp->pc <= &(prg->fp->tmpl->core[prg->fp->tmpl->coresz]));

  • (g_dilfe_func[*(prg->fp->pc - 1)].func(prg));
  • try
  • {
  • auto dil_function = g_dilfe_func.at(*(prg->fp->pc - 1));

Absolutely, I will profile it and get before and afters. With 200+ items I really doubt its even going to show up in the profiles but proving it is better.

As a side thing, if I load all the zones - my tests with wtime timewarp don't run anywhere near as fast as it used too with just the project zones. Is that expected, because of the increase in the zones.

— Reply to this email directly, view it on GitHub https://github.com/Seifert69/DikuMUD3/pull/343#discussion_r887456405, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOOOMXXKXKAWI7EHEKRV7QLVNAPIFANCNFSM5XSYQOTQ . You are receiving this because you commented.Message ID: @.***>