Mantis Bug Tracker

View Issue DetailsJump to Notes ] Wiki ] << ] >> ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000233jquantlib[All Projects] code reviewpublic2009-03-05 19:292009-06-18 01:35
ReporterRichard Gomes 
Assigned ToRichard Gomes 
PrioritynormalSeverityminorReproducibilityhave not tried
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target Version0.1.2Fixed in Version0.1.3 
Summary0000233: Possibly replacing fastutil by something else
DescriptionSomething not poping up in front my eyes one year ago raised my attention now.

Fastutil is LGPL, which means it is incompatible with JQuantLib license.
The immediate thing to do is email fastutil maintainers and ask for a license change. It was already done.

In the event we need to replace fastutil, this issue consists on determining which alternative would fit better. Below I enumarate some I have already previously selected based on compatible licenses:

1. http://commons.apache.org/primitives/api-release/index.html [^]
2. http://joda-primitives.sourceforge.net/apidocs/index.html [^]
3. http://javolution.org/api/javolution/util/package-summary.html#package_description [^]
TagsNo tags attached.
Attached Files

- Relationships
related to 0000049resolvedDominik Holenstein Create article regarding fastutil and JAL classes 

-  Notes
(0000228)
Richard Gomes (manager)
2009-03-06 03:18

Apache Commons Primitives
-------------------------
1. does not implements maps :(
2. does not implement JCF directly :: annyoing adaptors :(

Joda Primitives
---------------
1. Documentation says you have Maps but generated code does not contain Maps :(
(it uses a Apache Velocity to generate Java source code)
2. It implements directly JCF interfaces :) good!

Javolution
----------
1. It does not implement JCF as arrays of primitive types at all :( (really bad!)


Note: Only a small number of classes uses Maps:
rgomes@developer:~/workspace/jquantlib/src/main/java$ find . -name '*.java' -exec grep -H -i fastutil {} \; | grep -i map
./org/jquantlib/util/TimeSeries.java:import it.unimi.dsi.fastutil.objects.Object2ObjectAVLTreeMap;
./org/jquantlib/util/TimeSeriesDouble.java:import it.unimi.dsi.fastutil.objects.Object2DoubleAVLTreeMap;
./org/jquantlib/util/TimeSeriesDouble.java:import it.unimi.dsi.fastutil.objects.Object2DoubleSortedMap;


Conclusion:

1. Seems none of these 3 alternatives are good enough.
2. The better one could be JodaTime but it's implementation is pretty simplistic and would lead us to performance problems.
(0000229)
Richard Gomes (manager)
2009-03-07 00:44

Correction: In theory, LGPL could be compatible with EPL.
I'm waiting for an answer to this question.

If it became clear that fastutil cannot be used, a possible solution would be using Joda Primitives. A very quick analysis of the source code shown that it's pretty simplistic: we cannot expect good performance from it. Anyway, this is a fast path to substitute fastutil. For improved performance we'd better implement a OSGi module which makes use GPUs.

An entry level system could have a Radeon 3870 card at around £ 110.00
http://ati.amd.com/technology/streamcomputing/requirements.html [^]
(0000242)
Richard Gomes (manager)
2009-03-11 03:11

Fastutil removed and replaced by joda-primitives.
(0000338)
Richard Gomes (manager)
2009-06-18 01:35

Fastutil was replaced by Joda Primitives with a factor of success near 100%.
There are missing classes, mainly extending from Map interface. See http://bugs.jquantlib.org/view.php?id=239 [^]

done

- Issue History
Date Modified Username Field Change
2009-03-05 19:29 Richard Gomes New Issue
2009-03-06 03:18 Richard Gomes Note Added: 0000228
2009-03-06 03:19 Richard Gomes Issue Monitored: Richard Gomes
2009-03-06 03:19 Richard Gomes Issue Monitored: Srinivas Hasti
2009-03-06 03:19 Richard Gomes Issue Monitored: Q Boiler
2009-03-06 03:19 Richard Gomes Issue Monitored: Minh Do
2009-03-07 00:44 Richard Gomes Note Added: 0000229
2009-03-11 03:11 Richard Gomes Note Added: 0000242
2009-03-11 03:11 Richard Gomes Status new => resolved
2009-03-11 03:11 Richard Gomes Fixed in Version => 0.1.2
2009-03-11 03:11 Richard Gomes Resolution open => fixed
2009-03-11 03:11 Richard Gomes Assigned To => Richard Gomes
2009-03-11 03:38 Richard Gomes Relationship added related to 0000049
2009-06-18 01:35 Richard Gomes Note Added: 0000338
2009-06-18 01:35 Richard Gomes Status resolved => closed
2009-06-18 01:35 Richard Gomes Fixed in Version 0.1.2 => 0.1.3


Copyright © 2000 - 2009 MantisBT Group
Powered by Mantis Bugtracker