Subject: Poor shr performance on text-only webpage

From: Karthik Chikmagalur <[email-masked]>
Date: Fri, 22 Dec 2023 19:02:59 -0800

The function shr-descend (part of shr.el) performs very poorly when
rendering web pages.  This is not noticeable for small documents, but
when loading https://orgmode.org/manual.html, it locks up Emacs for
10+ seconds at 100% CPU utilization on one core.  In comparison, it
loads in 2-3 seconds in Firefox without a CPU spike.  (I have a
reasonably fast three year old laptop.)

--8<---------------cut here---------------start------------->8---
;; -*- lexical-binding: t; -*-

(let ((now (float-time)))
  (add-hook 'eww-after-render-hook
	    (lambda ()
	      (message "EWW took %f seconds" (- (float-time) now))))
  (eww "https://orgmode.org/org.html"))

;; => EWW took 10.606935 seconds
--8<---------------cut here---------------end--------------->8---

Note that the above link is a long text only page with little to no CSS
and no Javascript.

I did some profiling to see what is slowing it down.  If I'm reading
the profile correctly, 

- About 240,587,126,505 bytes (240 GB) of memory are allocated, and
  almost all of it is split evenly between shr-render-td and
  shr-render-td-1.

- about 54% of the the rendering time (10+ seconds) is spent in
  shr-descend, split between shr-tag-table and shr-tag-div.

- About 35% of the time is spent doing GC.

Is there some reason it's this slow and allocates so much memory?  The
only thing I noticed is that shr-descend and shr-render-td both use
intern a lot, perhaps that's one source of the allocation?

If you would like me to try something specific, I can give it a shot.
Please let me know.

The CPU and memory profiles are attached, and can be loaded with M-x
profiler-find-profile.  The test was run in `emacs -q'.

Karthik

In GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo
version 1.16.0, Xaw3d scroll bars)
Windowing system distributor 'The X.Org Foundation', version 11.0.12101009
System Description: NixOS 23.05 (Stoat)

Configured using:
 'configure
 --prefix=/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1
 --disable-build-details --with-modules --with-x-toolkit=lucid
 --with-xft --with-cairo --with-native-compilation --with-tree-sitter
 --with-xinput2'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON
LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XAW3D XDBE XIM XPM LUCID ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Fundamental

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  blink-cursor-mode: t
  buffer-read-only: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/karthik/.nix-profile/share/emacs/site-lisp/site-start hides /nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/site-lisp/site-start
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/emacs-lisp/let-alist hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/let-alist-1.0.6/let-alist
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-lua hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-lua
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-texinfo hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-texinfo
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-clock hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-clock
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-entities hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-entities
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-odt hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-odt
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-num hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-num
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-docview hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-docview
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-inlinetask hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-inlinetask
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-clojure hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-clojure
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-java hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-java
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-sass hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-sass
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-footnote hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-footnote
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-bbdb hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-bbdb
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-sed hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-sed
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-js hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-js
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-ref hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-ref
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-info hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-info
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-gnus hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-gnus
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-mobile hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-mobile
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-eshell hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-eshell
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-feed hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-feed
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-lint hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-lint
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-man hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-man
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-koma-letter hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-koma-letter
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-eval hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-eval
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-id hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-id
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-faces hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-faces
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-forth hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-forth
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-attach-git hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-attach-git
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-irc hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-irc
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-mhe hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-mhe
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-md hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-md
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-html hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-html
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-shell hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-shell
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/oc-biblatex hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/oc-biblatex
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-protocol hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-protocol
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-cycle hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-cycle
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-latex hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-latex
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-ctags hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-ctags
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-habit hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-habit
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-maxima hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-maxima
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-eww hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-eww
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-processing hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-processing
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-R hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-R
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-archive hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-archive
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-timer hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-timer
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-sqlite hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-sqlite
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-groovy hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-groovy
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-doi hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-doi
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-scheme hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-scheme
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-matlab hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-matlab
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-mouse hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-mouse
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-compat hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-compat
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-css hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-css
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-ascii hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-ascii
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-datetree hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-datetree
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-julia hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-julia
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/oc-natbib hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/oc-natbib
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-awk hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-awk
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-macro hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-macro
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-ditaa hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-ditaa
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-icalendar hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-icalendar
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-eshell hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-eshell
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-indent hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-indent
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-pcomplete hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-pcomplete
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-haskell hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-haskell
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/oc-basic hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/oc-basic
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-makefile hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-makefile
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-ruby hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-ruby
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-sql hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-sql
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-src hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-src
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-bibtex hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-bibtex
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-publish hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-publish
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-refile hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-refile
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-crypt hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-crypt
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-python hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-python
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-attach hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-attach
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-lilypond hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-lilypond
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-comint hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-comint
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-calc hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-calc
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-dot hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-dot
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-screen hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-screen
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/oc-csl hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/oc-csl
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-C hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-C
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-ocaml hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-ocaml
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-w3m hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-w3m
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ol-rmail hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ol-rmail
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-gnuplot hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-gnuplot
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-version hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-version
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-persist hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-persist
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-loaddefs hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-loaddefs
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-beamer hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-beamer
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-list hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-list
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-element hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-element
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-latex hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-latex
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-keys hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-keys
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-goto hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-goto
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-macs hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-macs
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-agenda hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-agenda
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-man hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-man
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-plantuml hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-plantuml
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-colview hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-colview
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-tangle hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-tangle
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-octave hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-octave
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-capture hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-capture
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-fold-core hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-fold-core
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-emacs-lisp hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-emacs-lisp
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-table hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-table
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-tempo hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-tempo
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-lob hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-lob
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ox-org hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ox-org
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-fortran hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-fortran
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-org hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-org
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-plot hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-plot
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/oc-bibtex hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/oc-bibtex
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-fold hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-fold
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-perl hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-perl
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-duration hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-duration
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-exp hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-exp
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/org-table hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/org-table
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/oc hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/oc
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-core hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-core
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/org/ob-lisp hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/org-9.6.6/ob-lisp
/nix/store/hxzlg5ydvndk1n4ajcsnzj8g9b8yf93g-emacs-29.1/share/emacs/29.1/lisp/transient hides /home/karthik/.nix-profile/share/emacs/site-lisp/elpa/transient-20230602.2121/transient

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
comp comp-cstr warnings icons subr-x rx cl-seq cl-macs gv cl-extra
help-mode bytecomp byte-compile cl-lib sendmail rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mail-utils rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
x multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 80574 10107)
 (symbols 48 7212 0)
 (strings 32 20748 1634)
 (string-bytes 1 675308)
 (vectors 16 15789)
 (vector-slots 8 330368 14645)
 (floats 8 29 46)
 (intervals 56 357 0)
 (buffers 984 12))