aholyoke / traildb-java Goto Github PK
View Code? Open in Web Editor NEWJava bindings for TrailDB
License: MIT License
Java bindings for TrailDB
License: MIT License
Currently, TrailDBCursor.next
creates a new TrailDBEvent and sets the fields of it with the internal values of tdb_event
. TrailDBCursor.next
will probably one of the hottest method call in codebase since we need to call it for each event.
Therefore, I believe that we should optimize it in a way that it should use minimum amount of memory and CPU. Specifically, I think we can provide two set of optimizations:
Add an extra TrailDBEvent
parameter to TrailDBCursor.next
and if it's not null, reuse that object instead of creating one. Avro is already using this method in order to minimize GC pressure: https://github.com/apache/avro/blob/17f2d75132021fafeca29edbdcade40df960fdc9/lang/java/avro/src/main/java/org/apache/avro/io/DatumReader.java#L35
Change the signature of TrailDBCursor.next
to return void
instead of TrailDBEvent
and add getCurrentItem()
, getCurrentTimesamp()
, getCurrentNumberOfItems()
to TrailDBCursor
. We can store the reference of native tdb_event
object inside TrailDBCursor
and use the proxy methods instead of TrailDBEvent
. The overhead of Java will be minimum in this case.
TrailDB tdb = new TrailDB("tiny.tdb");
TrailDBCursor cur = new TrailDBCursor(tdb);
cur.getTrail(trailId);
cur.getTrailLength(); // returns the correct value
cur.getTrailLength() // always returns 0
TrailDBCursor.getTrailLength
should always return the same value for a specific trail.
/Users/buremba/Code/dummy/traildb-java/native/src/main/native/TrailDB.c:1:10: fatal error: 'traildb.h' file not found
#include <traildb.h>
^
1 error generated.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.