Skip to content

etcimon/fast

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fast

This library aims to provide the fastest possible implementation of some every day routines.

The contained functions avoid GC allocations and input validation. They may use SSE or stack allocations to reach a high throughput so that in some cases a 20 fold speed increase can be achieved.

DMD, GDC and LDC2 compilers are supported. Tested with front-end versions 2.068 through 2.079.

Benchmark

A benchmark is included and can be run through dub, e.g.:

dub --config=benchmark --build=release --compiler=gdc

Examples

Read JSON file with coordinates.
struct Point3D { double x, y, z; }

void main()
{
    import fast.json;
    auto points = json.coordinates.read!(Point3D[]);
}
SSE3 accelerated splitting around '/' and ''
string rest = pathname
string element;

import fast.string;
while (rest.split!`or(=\,=/)`(element, rest))
{
    // `element' is now the next directory.
    // `rest' is what remains after the \ or /.
}
// `element` is now the file name part of the path.
Calling Windows API functions.
void createHardlink(string from, string to)
{
    import fast.cstring : wcharPtr;
    CreateHardLinkW(wcharPtr!to, wcharPtr!from, null);
}
Calling Linux API functions.
void createHardlink(string from, string to)
{
    import fast.cstring : charPtr;
    link(charPtr!from, charPtr!to);
}

About

A library for D that aims to provide the fastest possible implementation of some every day routines.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages