containers ~master
Containers that do not use the GC
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
Containers
Containers backed by std.experimental.allocator
Dependencies
Run git submodule update --init --recursive
after cloning this repository.
Documentation
Documentation is available at http://economicmodeling.github.io/containers/index.html
Insertion Speed Benchmark
Measurements taken on a Intel(R) Core(TM) i5-4250U CPU @ 1.30GHz
with 8GB of memory.
Compiled with dmd-2.068.0 using -O -release -inline
flags.
Code
import containers.ttree;
import std.container.rbtree;
import containers.slist;
import std.container.slist;
import containers.unrolledlist;
import std.experimental.allocator;
import std.experimental.allocator.building_blocks.allocator_list;
import std.experimental.allocator.building_blocks.region;
import std.experimental.allocator.mallocator;
import std.datetime;
import std.stdio;
// For fun: change this number and watch the effect it has on the execution time
alias Allocator = AllocatorList!(a => Region!Mallocator(1024 * 16), Mallocator);
enum NUMBER_OF_ITEMS = 500_000;
void testEMSIContainer(alias Container, string ContainerName)()
{
Allocator allocator;
auto c = Container!(int, typeof(&allocator))(&allocator);
StopWatch sw = StopWatch(AutoStart.yes);
foreach (i; 0 .. NUMBER_OF_ITEMS)
c.insert(i);
sw.stop();
writeln("Inserts for ", ContainerName, " finished in ",
sw.peek().to!("msecs", float), " milliseconds.");
}
void testPhobosContainer(alias Container, string ContainerName)()
{
static if (is(Container!int == class))
auto c = new Container!int();
else
Container!int c;
StopWatch sw = StopWatch(AutoStart.yes);
foreach (i; 0 .. NUMBER_OF_ITEMS)
c.insert(i);
sw.stop();
writeln("Inserts for ", ContainerName, " finished in ",
sw.peek().to!("msecs", float), " milliseconds.");
}
void main()
{
testEMSIContainer!(TTree, "TTree")();
testPhobosContainer!(RedBlackTree, "RedBlackTree")();
testPhobosContainer!(std.container.slist.SList, "Phobos SList")();
testEMSIContainer!(containers.slist.SList, "EMSI SList")();
testEMSIContainer!(UnrolledList, "UnrolledList")();
}
- Registered by Keywan Ghadami
- ~master released 9 years ago
- keywan-ghadami/containers
- github.com/economicmodeling/containers
- Boost
- Authors:
- Dependencies:
- none
- Versions:
-
0.2.2 2015-Dec-31 0.2.2-keywan 2015-Dec-31 0.2.1 2015-Sep-01 0.2.0 2015-Sep-01 0.1.0 2015-Aug-28 - Download Stats:
-
-
0 downloads today
-
1 downloads this week
-
2 downloads this month
-
2180 downloads total
-
- Score:
- 0.4
- Short URL:
- containers.dub.pm