-
Notifications
You must be signed in to change notification settings - Fork 7
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
Benchmark Ideas #1
Comments
I'll start with microbenchmarks (easier to write) using pyperf. I considered https://codspeed.io/ but I don't like their measurement methodology and don't trust that they'll stay "free" for long. So roughly:
|
Is there any plan to replace Python? |
Nope. There is no plan to change architecture or runtime at all. I might write some rust extensions to speed up frequent parts if it makes sense though. (e.g. MySQL connector's parser is written in python and is quite slow) |
"nanobenchmarks"
Document
methodsUnit Microbenchmarks
Read only benchmarks
Note: all of these are supposed to run on "fresh" install.
get_doc
- single document, multipleget_meta
- without frappe.local cache. i.e. first call-in request.get_value
,set_value
,exists
hget
,hset
make_key
get_value
get_single_value
commit
/rollback
(empty)set_value
- simple k:vdelete
- simple by namesql
queries (use as_dict as default)frappe.publish_realtime
frappe.enqueue
scheduler
- empty scheduler that just makes scheduling decisions.has_perm
has_only_select
Read/Write benchmarks
db.set_value
- different compositionsdocument.save
- single, multipledocument.insert
- single, multipledocument.submit
document.db_set
E2E minibenchmarks for top requests
/api/method/ping
- guest and auth/api/method/frappe.desk.form.save.savedocs
- insert, update, submit/api/method/frappe.desk.reportview.get
- multiple filter combinations/api/method/frappe.desk.query_report.run
- just overheads/api/method/frappe.desk.notifications.get_open_count
/api/method/frappe.desk.reportview.get_count
/api/method/frappe.desk.form.load.getdoc
/api/method/run_doc_method
- some read only method to do "server side reactivity"/app
- desk render/api/method/frappe.desk.form.load.getdoctype
- metadata bundle (should actually be cached./api/method/frappe.realtime.can_subscribe_doc
/api/method/frappe.utils.print_format.download_pdf
/api/method/frappe.www.printview.get_html_and_style
/login
- login page render/printview
/api/method/frappe.client.validate_link
/api/method/frappe.client.get_value
/api/method/frappe.realtime.get_user_info
/api/method/frappe.desk.reportview.get_list
/api/method/frappe.desk.doctype.notification_log.notification_log.get_notification_logs
/api/resource/{DT}
Trace replays (Open loop)
The text was updated successfully, but these errors were encountered: