Commit graph

83 commits

Author SHA1 Message Date
kortschak
6acfdcc5d6 Use concrete value for quad.Quad
Comparison of -short benchmarks in cayley.

$ benchcmp pointer.bench concrete.bench
benchmark                                   old ns/op     new ns/op	delta
BenchmarkNamePredicate                      1673276       1655093	-1.09%
BenchmarkLargeSetsNoIntersection            318985907     261499984	-18.02%
BenchmarkNetAndSpeed                        104403743     41516981	-60.23%
BenchmarkKeanuAndNet                        17309258      16857513	-2.61%
BenchmarkKeanuAndSpeed                      20159161      19282833	-4.35%

Comparison of pathological cases are not so happy.

benchmark                                   old ns/op       new ns/op		delta
BenchmarkVeryLargeSetsSmallIntersection     55269775527     246084606672	+345.24%
BenchmarkHelplessContainsChecker            23436501319     24308906949		+3.72%

Profiling the worst case:

Pointer:
Total: 6121 samples
    1973  32.2%  32.2%     1973  32.2% runtime.findfunc
     773  12.6%  44.9%      773  12.6% readvarint
     510   8.3%  53.2%      511   8.3% step
     409   6.7%  59.9%      410   6.7% runtime.gentraceback
     390   6.4%  66.2%      391   6.4% pcvalue
     215   3.5%  69.8%      215   3.5% runtime.funcdata
     181   3.0%  72.7%      181   3.0% checkframecopy
     118   1.9%  74.6%      119   1.9% runtime.funcspdelta
      96   1.6%  76.2%       96   1.6% runtime.topofstack
      76   1.2%  77.5%       76   1.2% scanblock

Concrete:
Total: 25027 samples
    9437  37.7%  37.7%     9437  37.7% runtime.findfunc
    3853  15.4%  53.1%     3853  15.4% readvarint
    2366   9.5%  62.6%     2366   9.5% step
    2186   8.7%  71.3%     2186   8.7% runtime.gentraceback
    1816   7.3%  78.5%     1816   7.3% pcvalue
    1016   4.1%  82.6%     1016   4.1% runtime.funcdata
     859   3.4%  86.0%      859   3.4% checkframecopy
     506   2.0%  88.1%      506   2.0% runtime.funcspdelta
     410   1.6%  89.7%      410   1.6% runtime.topofstack
     303   1.2%  90.9%      303   1.2% runtime.newstack
2014-08-05 23:25:02 +09:30
kortschak
6513685520 Fix lock contention 2014-08-04 12:32:43 +09:30
kortschak
0fedecd392 Use time.Duration according to the time docs
Having a time.Duration measuring seconds is likely to cause problems at
a later stage. This change retains configuration compatibility while
adding idiomatic duration use.
2014-08-02 23:16:17 +09:30
kortschak
2d884f92e9 Name reduction 2014-08-02 22:58:53 +09:30
kortschak
bf3ac2be9e Destutter gremlin.GremlinResult 2014-08-02 22:58:33 +09:30
kortschak
15a45ef0d4 Clean up style 2014-08-02 22:45:19 +09:30
kortschak
8ccf842518 Improve error handling
Export the timeout kill error and use error instead of string in result
struct.
2014-08-02 22:14:24 +09:30
kortschak
fe9ca5ffcc Fix data race in gremlin timeout handling
Fixes issue #95.
2014-08-02 22:01:02 +09:30
kortschak
b1a70d99aa Simplify Nexter interface
This change allows a Nexter to be used in the same manner as a scanner
using a for graph.Next(it) {} construction.

It is important that graph.Next(it) and any associated it.Result() calls
operate on the same iterator.
2014-08-01 09:15:02 +09:30
kortschak
f8e28e066e Rename NextResult -> NextPath
See discussion in #92.
2014-08-01 07:27:16 +09:30
kortschak
a6cf432313 Move query interface definitions into query 2014-07-31 08:52:24 +09:30
kortschak
1a0dd13735 Merge branch 'master' into benchmarks 2014-07-31 08:35:34 +09:30
kortschak
c4e4abbffc Add result validation 2014-07-31 08:33:18 +09:30
kortschak
2dbbd17fe1 Merge branch 'declassify' into tip
Conflicts:
	graph/iterator/hasa_iterator.go
	graph/iterator/linksto_iterator.go
	graph/iterator/query_shape_test.go
	graph/leveldb/all_iterator.go
	graph/leveldb/iterator.go
	graph/leveldb/leveldb_test.go
	graph/memstore/triplestore_test.go
	graph/mongo/iterator.go
2014-07-30 16:40:37 +09:30
kortschak
d6f94be514 Base nexting on interface satisfaction
This is done unsubtlely at the moment and there is plenty of room for
optimisation of assertion location to prevent repeated reasserting as is
done now.
2014-07-30 16:06:46 +09:30
kortschak
1604dca737 Move tag handling out into graph.Tagger 2014-07-30 10:25:32 +09:30
kortschak
401c58426f Create quads hierarchy
* Move nquads into quad.
* Create cquads simplified parser in quad.
* Move Triple (renamed Quad) to quad.

Also made sure mongo actually implements BulkLoader.
2014-07-28 21:36:22 +09:30
Jeremy Jay
a6dc5c9532 fix tests for new method names 2014-07-18 14:09:57 -04:00
kortschak
1c181429da Purge goconvey and mock
These packages really impact on test readability with crazy action at a
distance. In addition to this removal of goconvey reduced the test run
time for leveldb on average by about 40-50%.
2014-07-05 22:00:46 +09:30
kortschak
c2fd33f9d0 Fix missed test messages 2014-07-03 17:55:22 +09:30
1f67913ed9 fix test 2014-07-02 14:05:34 -04:00
1e2ff472ed Merge remote branch 'kortschak/tables' for #47
Conflicts:
	query/gremlin/functional_test.go
2014-07-02 13:51:13 -04:00
kortschak
ef7c793510 Use table driven test
This simplifies reasoning about the tests by not hiding logic behind a
DSL.
2014-07-02 21:57:31 +09:30
kortschak
447a835b93 Rename AddValue 2014-07-02 12:17:33 +09:30
kortschak
d87e227ff3 Rename TSVal 2014-07-02 12:13:15 +09:30
kortschak
a1453da84e Don't indirect map values
We already have reference behaviour, so this is not necessary.

This change highlighted fairly baroque architecture in mql that deserves
some attention; the use of channels is somewhat confusing.

Also rename LastResult to Result.
2014-07-02 12:08:49 +09:30
kortschak
b89d4f392c Reduce TripleStore interface names 2014-07-02 11:40:33 +09:30
kortschak
1768e593a8 Move iterators into separate package
Also reduce API exposure and use standard library more - and fix bugs I
previously introduces in mongo.
2014-07-01 09:21:32 +09:30
kortschak
0a03cec497 Replace string type with graph.Direction
This conversion is not complete as there are still uses of string
directions via the Direction.String method in leveldb.
2014-06-30 12:41:03 +09:30
kortschak
5a1a7259c8 Canonicalise gremlin receiver names 2014-06-28 21:56:42 +09:30
kortschak
3a673a333c Destutter gremlin 2014-06-28 12:55:21 +09:30
kortschak
47c9752e5e Destutter filenames 2014-06-28 12:31:33 +09:30
kortschak
c66d6d3994 Move query language packages into query 2014-06-28 01:43:13 +09:30