Skip to content
This repository has been archived by the owner on Feb 12, 2024. It is now read-only.

Benchmarks #455

Closed
6 tasks
dignifiedquire opened this issue Sep 7, 2016 · 17 comments
Closed
6 tasks

Benchmarks #455

dignifiedquire opened this issue Sep 7, 2016 · 17 comments
Assignees
Labels
exp/expert Having worked on the specific codebase is important help wanted Seeking public contribution on this issue

Comments

@dignifiedquire
Copy link
Member

dignifiedquire commented Sep 7, 2016

In order to know how fast things are, and in which area we can improve we want to add benchmarks to js-ipfs and its modules.

For the first round I suggest adding the following benchmarks

js-ipfs

  • {offline|online} file add {file|folder}
    • files: count {1|5|10} - size {1KB|10KB|100KB|1MB}
    • folders: count {1|5|10}
  • {offline|online} file get {file|folder} 
    • files: count {1|5|10} - size {1KB|10KB|100KB|1MB}
    • folders: count {1|5|10}
  • {offline|online} object put
    • count {1|5|10} - size {1KB|10KB|100KB|1MB}
  • {offline|online} object get
    • count {1|5|10} - size {1KB|10KB|100KB|1MB}
  • block distribution between {2|5|10} nodes (these should be different processes)
    • block count {10|100} - size {1KB|10KB}

js-libp2p-secio

  • throughput on a connection over {pull-pair|tcp|websockets}
    • messsage: size {100Bytes|10KB|100KB} - count {100|1000}
@dignifiedquire dignifiedquire added exp/expert Having worked on the specific codebase is important help wanted Seeking public contribution on this issue milestone 2 labels Sep 7, 2016
@daviddias
Copy link
Member

Let's make sure these benchmarks present valid measures by adding the quantity of operations and size of files they will have to perform.

@Kubuxu
Copy link
Member

Kubuxu commented Sep 7, 2016

Take a look at https://github.com/whyrusleeping/ipfs-whatever which is very simple and naive benchmarks we have used for go-ipfs over HTTP API.

It would be best if we could reuse some/most benchmarks for both js-ipfs and go-ipfs not to double up the efforts.

@dignifiedquire
Copy link
Member Author

Let's make sure these benchmarks present valid measures by adding the quantity of operations and size of files they will have to perform.

Added some numbers, feel free to suggest better ones, these are wild guesses currently.

@dignifiedquire
Copy link
Member Author

It would be best if we could reuse some/most benchmarks for both js-ipfs and go-ipfs not to double up the efforts.

I would love if I can just run this against js-ipfs. That would be a great start and save us some time.

@dignifiedquire
Copy link
Member Author

I just tested to run ipfs-whatever against js-ipfs. If we have add and cat at the same place as go we can actually use it! Which I very much prefer over having a separate test suite for the first round.

@dignifiedquire
Copy link
Member Author

dignifiedquire commented Sep 7, 2016

First results for things that worked out of the box. Before is js-ipfs (pull branch), After is go-ipfs (master)

Results          Before  After   % Change
PatchOpsPerSec   208.54  681.61  226.85%
DirAddOpsPerSec  133.70  758.74  467.51%
DirAddOpsStdev   7.64    81.62   968.80%

@daviddias
Copy link
Member

It would also be cool to have the benchmarks over ipfs-api, both against go-ipfs or js-ipfs :D

@daviddias
Copy link
Member

bump the order of magnitude by one or two on the benchmark tests

@dignifiedquire
Copy link
Member Author

bump the order of magnitude by one or two on the benchmark tests

Not sure that would be good, those will already be running very long.

@daviddias
Copy link
Member

Adding 10 files of 1MB is taking a lot of time?

@dignifiedquire
Copy link
Member Author

Adding 10 files of 1MB is taking a lot of time?

No, but if you calculate the above matrix and add the fact that each thing should be run at least 10 times to get some statistical relevance this will explode very quickly.

@daviddias
Copy link
Member

Still, we should bump it (or have a way to bump it, like interface-stream-muxer and mega test)

@dignifiedquire
Copy link
Member Author

Just had a chat with @diasdavid, for the first round we will

@victorb
Copy link
Member

victorb commented Sep 15, 2016

@dignifiedquire

await the PR from @victorbjelkholm to fix and add add and cat on the http api

This has been merged.

expose add and cat at the top level as aliases

This is in a PR now: #493

@daviddias
Copy link
Member

💯 yes, let's get the ipfs-whatever benchmarks in :)

@dignifiedquire
Copy link
Member Author

@diasdavid PR already exists here : #488

@daviddias
Copy link
Member

closing this one in favor of the PR :)

@daviddias daviddias removed the status/in-progress In progress label Nov 12, 2016
MicrowaveDev pushed a commit to galtproject/js-ipfs that referenced this issue May 22, 2020
* test: tests for recursive dns

* docs: update documentation for ipfs.dns
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
exp/expert Having worked on the specific codebase is important help wanted Seeking public contribution on this issue
Projects
None yet
Development

No branches or pull requests

4 participants