#

A Tour of NTL: Some Performance Data

Here are some timing figures from using NTL. They were obtained using NTL 11.6.0 compiled with Apple clang version 17.0.0 (clang-1700.3.19.1) and with GMP 6.3 on an Apple M1 Max running macOS.

All times are ins seconds. The times were obtained using the program `Timing` included in the distribution. The data was generated using NTL's random number generator, but running this on a different machine should (in theory) generate the same data.

    multiply 1000-bit ints: 1.2862e-07
    square 1000-bit ints: 7.99998e-08
    remainder 2000/1000-bit ints: 3.0913e-07
    gcd 1000-bit ints: 3.44037e-06
    xgcd 1000-bit ints: 4.18556e-06
    power mod 1000-bit ints: 0.000251588
    multiply degree-1000 poly mod 1000-bit prime: 0.00241779
    remainder degree-2000/1000 poly mod 1000-bit prime: 0.00662264
    preconditioned remainder degree-2000/1000 poly mod 1000-bit prime: 0.00243341
    gcd degree-1000 poly mod 1000-bit prime: 0.0706218
    multiply degree-1000 int poly with 1000-bit coeffs: 0.00293567

    factoring degree-1000 poly mod 1000-bit prime...
    square-free decomposition...0.071287
    factoring multiplicity 1, deg = 1000
    computing X^p...4.07509
    computing DDF...generating baby steps...+++++++++++++++++++++1.47373
    generating giant steps...++++++++++++++++++++++1.53734
    giant refine...++++split 1 18
    *++++*++++*++++*++++split 17 355
    *split 0 627
    giant refine time: 2.45511
    baby refine...split 1 1
    split 8 8
    split 9 9
    split 355 355
    split 627 627
    baby refine time: 0.02605
    DDF time: 5.49543
    ...total time = 9.64638

    multiply 1000x1000 matrices mod 1000-bit prime: 6.01712

    multiply 500-bit GF2Xs: 1.82301e-08
    remainder 1000/500-bit GF2Xs: 4.12932e-07
    gcd 500-bit GF2Xs: 2.95696e-06

    factoring degree-500 GF2X: 8.74958e-05
    gcd 500-bit GF2X: 2.9557e-06
    multiply degree-500 poly mod 500-bit GF2X: 0.000861831
    remainder degree-1000/500 poly mod 500-bit GF2X: 0.0030675
    preconditioned remainder degree-1000/500 poly mod 500-bit GF2X: 0.00169757
    gcd degree-500 poly mod 500-bit GF2X: 0.019063

    factoring degree-500 poly mod 500-bit GF2X...
    square-free decomposition...0.00218
    factoring multiplicity 1, deg = 250
    computing X^p...0.170542
    computing DDF...generating baby steps...++++++++++0.120979
    generating giant steps...+++++++++++0.135235
    giant refine...++++split 1 9
    split 2 13
    split 4 44
    *++++split 7 73
    *split 0 111
    giant refine time: 0.084774
    baby refine...split 9 9
    split 13 13
    split 44 44
    split 73 73
    split 111 111
    baby refine time: 0.000523
    DDF time: 0.341556

    ...total time = 0.507704