Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jan 31 15:06

    ldionne on gh-pages

    Update benchmarks to 490dbf6 fo… (compare)

  • Jan 24 07:47

    ldionne on gh-pages

    Update benchmarks to 490dbf6 fo… (compare)

  • Jan 23 02:04
    pthom commented #432
  • Jan 18 12:46

    ldionne on gh-pages

    Update benchmarks to 490dbf6 fo… (compare)

  • Jan 16 22:27
    ricejasonf commented #434
  • Jan 05 06:22
    ricejasonf commented #330
  • Jan 03 11:40

    ldionne on gh-pages

    Update benchmarks to 490dbf6 fo… (compare)

  • Jan 02 00:33
    ricejasonf closed #434
  • Jan 02 00:33
    ricejasonf commented #434
  • Jan 02 00:04
    ricejasonf opened #434
  • Dec 27 2018 13:11

    ldionne on gh-pages

    Update benchmarks to 490dbf6 fo… (compare)

  • Dec 22 2018 11:56
    pthom commented #432
  • Dec 22 2018 11:55
    pthom commented #432
  • Dec 21 2018 15:48
    pthom synchronize #432
  • Dec 21 2018 09:19
    sdebionne opened #433
  • Dec 21 2018 00:08
    ricejasonf commented #432
  • Dec 21 2018 00:03
    ricejasonf commented #432
  • Dec 20 2018 23:36
    pthom commented #432
  • Dec 20 2018 23:36
    pthom commented #432
  • Dec 20 2018 23:13
    ricejasonf commented #432
Maik Klein
@MaikKlein
Should be what I want, but that seems way too complicated for something so simple
Jason Rice
@ricejasonf
here is a much, much simpler solution and the good news is it only generates one warning :P
#include<type_traits>

template<int size, typename = void>
struct SizeChecker
{ };

template<int size>
struct SizeChecker<size,
  std::enable_if_t<(size == 0)>>
{
  static_assert(size == 0, "Does not contain anything");
};

template<int size>
struct SizeChecker<size,
  std::enable_if_t<(size > 1)>>
{
  static_assert(size > 1, "Contains duplicates");
};

int main()
{
  constexpr int size = 1;
  SizeChecker<size>{};
}
Maik Klein
@MaikKlein
haha
Jason Rice
@ricejasonf
sorry that's all i got
Maik Klein
@MaikKlein
It appears that I was very confused and you can actually write it like this static_assert( size != 0, "Must not be empty") and static_assert(size <= 1, "Too many")
I think the trigger at false must have confused me somehow
Jason Rice
@ricejasonf
ah right It would check the second one after asserting that it wasn't 0
Maik Klein
@MaikKlein
?
Jason Rice
@ricejasonf
meaning you can't get two failures
Maik Klein
@MaikKlein
I can only get one failure
Jason Rice
@ricejasonf
yeah.. nm :)
Maik Klein
@MaikKlein
because for 0, 0 <= 1 is true
:d
Jason Rice
@ricejasonf
@MaikKlein Regarding your question about 'previous template instantiations', precompiled header files might be the answer. I'm not sure to what extent it would make a difference, but it shaves off about 5 seconds (from 8 seconds total) from my convoluted primality test. A more extreme case could be tested by fiddling with the upper end of the range in expensive.hpp.
As you can see in the Makefile you can compile a .pch just like you can an object file.
Jason Rice
@ricejasonf
Apparently clang has modules implemented. I wonder if it would be feasible to export that map variable and tell clang to fully evaluate/optimize the AST to output a pch or header file that leaves all of the cruft behind.
Maik Klein
@MaikKlein
@ricejasonf interesting, haven't used pch's yet.
btw is there a way to benchmark the compile time? I tried -ftime-report in clang but it's not very helpful.
Maik Klein
@MaikKlein
I am thinking of something like
foo<a,b,c,d> at line 24 in foo.hpp took 1.54 seconds to instantiate.
Jason Rice
@ricejasonf
@MaikKlein idk. I was just using time make and it appears that Hana uses a ruby script that calls a make command
Maik Klein
@MaikKlein
I guess that works okay for isolated code, but I would really like to see where the bottleneck is in my current code base. I'll have a look at clang modules now and see if they give me any benefit.
Maik Klein
@MaikKlein
I guess I am also going to try templight, it even integrates kcachegrind
^ wtf is that image
ah it's his profile picture
Jason Rice
@ricejasonf
this oss?
your project that is
Maik Klein
@MaikKlein
My project will be open source
not sure if that is what you asked though :d. I am not the creator of templight
Jason Rice
@ricejasonf
is it on github?
Maik Klein
@MaikKlein
Not yet, it's in a very early state. It will be a 2d game framework with an entity component system.
Louis Dionne
@ldionne
@MaikKlein To find the compile-time bottlenecks in your code, first isolate the TUs that are problematic. Then, what I usually do is simply comment out instantiations and compile over and over with time clang++ ….
Also, I just found out about ccache. It caches files between compilations, and it’s really awesome (from what I can see so far).
Jason Rice
@ricejasonf
@ldionne I'm not sure if manual intervention is required for Travis to include my third commit and cancel the builds for the second commit.
I keep getting "There was an error while loading data, please try again" on the linked status page.
Louis Dionne
@ldionne
@ricejasonf It will automatically test any new commit that you push, and you can just leave it do its job on the current commits, even though that’s not strictly required.
Which status page?
Louis Dionne
@ldionne
I can see the jobs just fine.
jobs.tiff
Jason Rice
@ricejasonf
same link and everything... weird but nbd
Jason Rice
@ricejasonf
@ldionne It says some checks were not successful. I still see the error page on travis. :scream:
Louis Dionne
@ldionne
@ricejasonf It’s fine, it was just a timeout when downloading Boost. I restarted that job.
@ricejasonf Would you mind squashing these commits together, and then push —forceing to update the PR?
Otherwise, I can just squash it myself; you decide.
Jason Rice
@ricejasonf
I would like to do it
..once I figure it out :P