# Performance Testing

**URL:** https://org-roam.discourse.group/t/performance-testing/213
**Category:** Development
**Created:** [May 28, 2020, 10:50pm UTC](https://org-roam.discourse.group/t/performance-testing/213 "2020-05-28T22:50:38Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![dangirsh](https://avatars.discourse-cdn.com/v4/letter/d/9d8465/32.png) [@dangirsh](https://org-roam.discourse.group/u/dangirsh)
#### Post date: [May 28, 2020, 10:50pm UTC](https://org-roam.discourse.group/t/performance-testing/213/1 "2020-05-28T22:50:38Z")

</div>

I’m loving org-roam, and, like many here, care about the longevity of my note system. With my habits (e.g. making nodes for most humans I interact with), I could easily end up with 10,000+ nodes in a few years. If that’s unlikely to be workable with org-roam, it would be good to know!

After searching through the code / tests / GH issues / Slack, I found very little info on the scalability of org-roam’s current implementation. I thought it would be good to aggregate info here, and make GH issues (e.g. scaling tests) as-needed.

Some things I’ve noticed so far:

1. at ~500 nodes, most core operations are snappy for me
2. running org-roam-insert on a new entity takes ~3-5 seconds until the link is inserted.
3. I imported ~400 more nodes from Roam yesterday, and had no noticeable slowdown.
4. Tangentially related: org-agenda can’t handle large numbers files, so I’ve been using [capture templates with backlinks to workaround this](https://github.com/dangirsh/.doom.d#todos--org-agenda-integration). This is unfortunate, since interspersing TODOs directly in the nodes is a great Roam feature IMO.

Is anybody operating at near the 10,000 node scale?

---

<div class="post-metadata">

### Author: ![cobblepot](https://avatars.discourse-cdn.com/v4/letter/c/dec6dc/32.png) [@cobblepot](https://org-roam.discourse.group/u/cobblepot)
#### Post date: [May 29, 2020, 2:20am UTC](https://org-roam.discourse.group/t/performance-testing/213/2 "2020-05-29T02:20:20Z")

</div>

I’m unable to test this myself, but one of the founders of [zettelkasten.de](http://zettelkasten.de) has made available an archive of 10,000 markdown files for this type of stress-testing:  
[https://github.com/Zettelkasten-Method/10000-markdown-files](https://github.com/Zettelkasten-Method/10000-markdown-files)

---

<div class="post-metadata">

### Author: ![nobiot](https://yyz2.discourse-cdn.com/free1/user_avatar/org-roam.discourse.group/nobiot/32/159_2.png) [@nobiot](https://org-roam.discourse.group/u/nobiot)
#### Post date: [May 31, 2020, 3:17pm UTC](https://org-roam.discourse.group/t/performance-testing/213/3 "2020-05-31T15:17:38Z")

</div>

@dangirsh, @cobblepot, I was going to do a quick test to prepare a reponse to this exchange; it turned out to be a rather lenghty write-up for that purpose. So I created a separate post; you might find some data and my conclusion useful: [What does it feel like to work with 10,000 notes in Org-roam: Benchmarking Org-roam's search methods](https://org-roam.discourse.group/t/what-does-it-feel-like-to-work-with-10-000-notes-in-org-roam-benchmarking-org-roams-search-methods/227). Thank you, @cobblepot, for the link. It was very useful.

---

<div class="post-metadata">

### Author: ![dangirsh](https://avatars.discourse-cdn.com/v4/letter/d/9d8465/32.png) [@dangirsh](https://org-roam.discourse.group/u/dangirsh)
#### Post date: [June 1, 2020, 11:34pm UTC](https://org-roam.discourse.group/t/performance-testing/213/4 "2020-06-01T23:34:52Z")

</div>

Thanks for the details write-up + video @nobiot!

This gives me peace-of-mind for now.

---

<div class="post-metadata">

### Author: ![dangirsh](https://avatars.discourse-cdn.com/v4/letter/d/9d8465/32.png) [@dangirsh](https://org-roam.discourse.group/u/dangirsh)
#### Post date: [June 3, 2020, 11:47pm UTC](https://org-roam.discourse.group/t/performance-testing/213/5 "2020-06-03T23:47:52Z")

</div>

Just hit another snag: Org’s refile mechanism seems too inefficient to directly use on the entire set of org-roam files. Has anybody had success with this?

---

<div class="post-metadata">

### Author: ![jethro](https://avatars.discourse-cdn.com/v4/letter/j/b5a626/32.png) [@jethro](https://org-roam.discourse.group/u/jethro)
#### Post date: [June 4, 2020, 8:15am UTC](https://org-roam.discourse.group/t/performance-testing/213/6 "2020-06-04T08:15:23Z")

</div>

Most of Org-mode breaks down with both a large number of files, as well as with files that are large (e.g. org-agenda). That said, moving things around is a bit of an anti-pattern in the Zettelkasten method. Luhmann typically writes a note, assigns it an ID and files it away without editing them later on.

---

<div class="post-metadata">

### Author: ![dangirsh](https://avatars.discourse-cdn.com/v4/letter/d/9d8465/32.png) [@dangirsh](https://org-roam.discourse.group/u/dangirsh)
#### Post date: [June 4, 2020, 8:33am UTC](https://org-roam.discourse.group/t/performance-testing/213/7 "2020-06-04T08:33:09Z")

</div>

That’s fair @jethro . Perhaps this wasn’t your intent, but I’ve been using org-roam as a graph layer on top of Org for various use-cases, including journaling, pdf notes, code prototyping, and personal CRM.

The Zettelkasten method was only one of many use-cases for RoamResearch. Maybe if the package was named `org-zettel`, I wouldn’t have tried to do everything with it 😉

---

<div class="post-metadata">

### Author: ![edumerco](https://yyz2.discourse-cdn.com/free1/user_avatar/org-roam.discourse.group/edumerco/32/52_2.png) [@edumerco](https://org-roam.discourse.group/u/edumerco)
#### Post date: [June 8, 2020, 2:51pm UTC](https://org-roam.discourse.group/t/performance-testing/213/8 "2020-06-08T14:51:50Z")

</div>

Hello @dangirsh.

> [@dangirsh](#):
>
> Tangentially related: org-agenda can’t handle large numbers files, so I’ve been using capture templates with backlinks to workaround this […]This is unfortunate, since interspersing TODOs directly in the nodes is a great Roam feature IMO.

In my case, I use the usual wiki approach: tag the task with a link to the state (like “Pendiente”). So, in the node “Pendiente” there are backlinks to every pending task. This is not as efficient as org-agenda since there are no remote editing capabilities or filtering, but since I have not so many tasks opened, it’s enough for me.

I hope this solution could be useful for others… 🙂

Best regards…
