Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ongoing] perf stuff #249

Closed
tlienart opened this issue Jul 26, 2023 · 3 comments · Fixed by #250
Closed

[ongoing] perf stuff #249

tlienart opened this issue Jul 26, 2023 · 3 comments · Fixed by #250

Comments

@tlienart
Copy link
Owner

  1. why a XranklinCore and Utils module per page; why not use the parent one
  2. world age stuff, can we freeze world age at start of full pass and use invoke_in_world (or can we avoid this world age shit altogether) outputof can be slow due to invokelatest; this can make fullpass slow #247
  3. can we use a single LC for tags instead of one per tag; in a way we already overwrite given we all attach them to __tags__ write_tag_page is inefficient #248
  4. the @debug stuff doesn't work anymore (again this stderr capture crap), this can be delegated to Rethink logging #235
  5. track down when config and utils are evaluated in the full pass, does it need to be as many times?

Safer to do some of this stuff on a separate branch printing the world age etc.

@tlienart
Copy link
Owner Author

with a real utils file

julia> @btime X.DefaultLocalContext($gc; rpath=Random.randstring(7));
  40.594 ms (23274 allocations: 1.45 MiB)

It's not negligible but there's probably lower hanging fruit than to mess with stacktrace to remove the Utils module from Page module.

We can possibly remove the Core stuff though as it's not needed to have that in every page module potentially?

@tlienart
Copy link
Owner Author

  • only instantiate "code notebook" if there's actual code (so ad-hoc, otherwise attach an empty one).

@tlienart
Copy link
Owner Author

  • comment out (most of) the threading code; all code stuff needs to be locked anyway e.g. to keep track of std* and it'd be mostly useful for the fullpass but there's lower hanging fruit elsewhere.
  • ensuring that we don't need to lock = we can overwrite Utils.cur_lc() for each context without worries.
  • (additionally it's likely incorrect)

can investigate whether threading some smaller bits (e.g. the copying of assets) makes a diff or not.

@tlienart tlienart mentioned this issue Jul 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant