Track Zotero Operating Speed


Is there any way to track Zotero's operating speed? For example, the time to open up Zotero, time to output a report, time to index a PDF, etc. I currently have 504 items in my Library and I want to track Zotero's speed as I continue to add items.

  • If you start zotero with -ZoteroDebugText it will spit debug logging to the console. You can sort of tell what zotero is doing from that.
  • Thank you @emilianoeheyns for your response!

    In the Debug Text every line is proceeded by numbers like (4)(+0000003), as an example. Do these indicate the time taken for that task?
  • It's the time since the previous logged message.
  • Thanks @emilianoheyns. Just for my own understanding, the Debug Text is a way to track and see the tasks and workings of Zotero.

    So, the time between each logged message is not an indication of how long Zotero takes to process adding an attachment to a parent item or creating a new subcollection, for example. (i.e. Are the logged messages being written as each action in Zotero is being done?)
  • They're written whenever Zotero.debug() is called. This is meant for development. Some actions (e.g., startup) have their total times logged, but others don't and you'd have to know what you were looking at and/or add additional debug lines.
  • edited August 4, 2021
    I wouldn't call it tasks. Zotero reports some of the things it is doing. From that you can sort of read what zotero is doing.

    If there happens to be a log statement just prior to an attachment being added and just after, then you can tell how long adding an attachment takes. Same for collections. "each action" isn't a meaningful unit - that could mean every function call, and that certainly isn't being logged.

    That said, if you see a log statement that always precedes adding an attachment, and you see the log statement that finishes it (which will be the sql statement writing it to the db), you can see whether the time between them increases if you add more items.

    What are you trying to accomplish? If you really want performance measurements, you can get much better info using something like the bbt debug bridge and just take actual timings of the events of interest. Note that these are one-shot tests, and adding item number 100 to your db will not always take exactly the same number of milliseconds. You'd have to take many samplings, combined with various states of load on the system outside zotero, take into account whether the system has an ssd or not, etc, to get a really meaningful number.
  • I am using Zotero for a large literature search project. I am using Zotero locally only. Currently, My Library is around 1100 and each item has a stored copy of a PDF. All future items added will follow this model. I am populating this database to be used and maintained on a long term basis.

    I was tasked with seeing if Zotero could generate any performance data. My supervisor is concerned about how Zotero will handle the eventual amount of items that will be stored and had the idea of creating separate Data Directories for each topic in our database. The number of items will eventually grow to 5000+ and onwards.

    From my readings though, as we are only working locally, Zotero may only begin to slow down (since every item will have a stored file) around 20,000 items.

    Your advice on this would be greatly appreciated. Thanks.
  • One of my test cases is 24k items, and the only place that I really see slowdown is in startup, and even that is measured in (a lot of) seconds rather than minutes.

    1100 is nothing. My regular library is 3.6k items and that's absolutely no problem.

    But if you're tasked with measuring performance data you'd need to take a more structured approach. Prepare test scenarios, and then use a framework like benchmarkjs and debug bridge to get reproducible tests and meaningful numbers.
  • Thank you very much. Your feedback and comments have been very helpful.
Sign In or Register to comment.