https://github.com/opencog/benchmark
Benchmarking the AtomSpace, the pattern matcher and other OpenCog systems
https://github.com/opencog/benchmark
atomspace benchmark pattern-matcher
Last synced: 4 months ago
JSON representation
Benchmarking the AtomSpace, the pattern matcher and other OpenCog systems
- Host: GitHub
- URL: https://github.com/opencog/benchmark
- Owner: opencog
- License: agpl-3.0
- Created: 2018-03-27T04:58:46.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2025-08-31T02:42:54.000Z (10 months ago)
- Last Synced: 2025-10-19T22:14:46.212Z (8 months ago)
- Topics: atomspace, benchmark, pattern-matcher
- Language: Scheme
- Homepage:
- Size: 14.3 MB
- Stars: 6
- Watchers: 9
- Forks: 9
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Benchmark
Collection of tools and data to benchmark the AtomSpace, the pattern
matcher and other OpenCog processes.
## Organization
Each distinct benchmark has it's own instructions for building and
running it. See individual directories for details.
The most interesting benchmarks are probably the **query-links** and
**query-loop** benchmarks (because they are "real-world" benchmarks)
and the **atomspace** benchmark (because it has a very long measurement
history, despite being deeply flawed).
* __assembly__ -- examination of assembly code of some simple programs.
* __atomspace__ -- A synthetic benchmark for measuring core AtomSpace
functions, such as rates for creating `Node`s and `Link`s, rates for
deleting them, and rates for setting and getting `TruthValue`s and
`IncomingSet`s.
* __micro__ -- Micro-benchmarks for misc items. ***These benchmarks
do not work correctly! They're just plain broken! They report
incorrect results! DO NOT USE!*** See the README in the subdirectory
for details about what's wrong.
* __python__ -- Benchmarks for the python bindings to various AtomSpace
subsystems.
* __query-trite__ -- A synthetic benchmark containing some trivial
pattern matcher queries.
* __query-links__ -- Several real-world benchmarks for performing
complex pattern matches on a real-world natural-language dataset.
One models an activity one might need in a parser, that of joining
together connectors. It creates 576 `BindLink`'s with four `GlobNodes`
and a `Variable`, each. The `Glob`s are used to search for connectable
connectors, similar to what parser would need to do. That is, this
is a search over "jigsaw puzzle pieces", looking for pairs of jigsaw
pieces that can connect.
A second benchmark in this directory computes dot products of vectors
in six different ways, each using an increasingly complex query
pattern. Uses the same base dataset.
* __query-loop__ -- A real-world benchmark for performing a complex
pattern match on a real-world genome dataset. Uses EvaluationLink
in a simple/straight-forward way to represent the edges and vertices
of a large graph (for gene/protein interactions), and then hunts
for triangles and pentagons in that graph.
* __cogserver__ -- Benchmark of network I/O to the cogserver.
Highlights issues created by using `netcat` instead of using native
socket I/O.
## Using perf
It can be useful to use `perf`. Sometimes. Maybe. Here's the
cheat-sheet:
To record 15 seconds worth:
```
sudo perf record -F 199 -p pid --call-graph fp -- sleep 15
```
CAUTION: need to run perf as root, and it writes crap into the
/root/.debug folder! This eats disk!
View reports:
```
perf report
perf report -n
perf report --stdio -n -g -G
```