Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 06:11
    glennawatson closed #1664
  • 06:11
    glennawatson commented #1664
  • 06:04
    glennawatson opened #1664
  • Mar 06 22:24
    zjklee commented #54
  • Mar 06 10:35
    adamsitnik commented #1661
  • Mar 06 10:34
    adamsitnik assigned #1661
  • Mar 06 04:36
    kevinsalimi commented #1661
  • Mar 06 02:15
    leandromoh edited #1663
  • Mar 05 20:42
    naricc synchronize #1662
  • Mar 05 20:40
    naricc synchronize #1662
  • Mar 05 20:40
    naricc synchronize #1662
  • Mar 05 20:40
    naricc synchronize #1662
  • Mar 05 20:39
    naricc synchronize #1662
  • Mar 05 20:38
    naricc synchronize #1662
  • Mar 05 20:38
    naricc synchronize #1662
  • Mar 05 20:36
    naricc synchronize #1662
  • Mar 05 20:35
    naricc synchronize #1662
  • Mar 05 20:34
    naricc synchronize #1662
  • Mar 05 20:33
    naricc synchronize #1662
  • Mar 05 20:22
    naricc synchronize #1662
TeBeCo
@tebeco
image.png
the result look like this :
Adam Sitnik
@adamsitnik
also i'm curious about the way to change Name of a Parameterized bench
You need to override .ToString() in the class that is used as paramter (in your case its JsonHubProtocol etc)
TeBeCo
@tebeco
so i have to inherits the one from aspnetcore or wrap it ?
Adam Sitnik
@adamsitnik
you could just wrap it, or inherit. You can also add a new enum, use it as parameter and then handle in the setup method
sth like
public enum Hub
{
    Json,
    NetonsoftJson,
    MessagePack
}

[Params(Hub.Json, Hub.Json, Hub.MessagePack)]
public Hub Hub;

[GlobalSetup]
public Setup()
{
    switch (Hub)
    {
        case Json;
            hubProtocol = new JsonHubProtocol();
            break;
    }
}

private IHubProtocol hubProtocol;
TeBeCo
@tebeco

i wondered yesterday if there was another attribute like for example

[ColumnSource]
public string Foo => this.HubProtocol.Name;

to generate a column name Foo
but that would also mean finding how to hide the automated one

The attributes are name but as it is attributes value must be known at compile time

i'm very curious here

about inheritance thx, spot that yesterday but not sure this was the only way since it felt weird at first

i did not though about the enum ^^
looks a bit better for this scenario
Adam Sitnik
@adamsitnik
I've forgotten about the simplest solution....
You could just increase the column width
because it's contaisn the type name (the default .ToString() behaviour in .NET), but it's trimmed
TeBeCo
@tebeco
yep looks like typeof(T).FullName
Adam Sitnik
@adamsitnik
TeBeCo
@tebeco
(.ToString() as you said ^^)
Adam Sitnik
@adamsitnik
I am before my first coffee :d
TeBeCo
@tebeco
any idea for the other tricky question ^^ ?
with or without a coffee ☕️ hahaha
this one is a mystery for me

i saw that there were .WithNuget helpers but my guess is that it's helps full when thing still builds
i'm looking at few breaking change in my own implementation ;)

one way would be to release both version of my code in release and bench against my own Nugets package since i just consume an IHubProtocol ?

Adam Sitnik
@adamsitnik
You could also add a custom build configuration
TeBeCo
@tebeco
i though about that too, it's not a simple breaking change in my own lib, i'll try to see how it goes but it might complexify stuff just for the cost of a bench
while previous version of this lib where already shipped but the exposed "contract" is still the same, the .WithNuget might do the trick if i consume a "local" RestoreSource
i'll just make sure PackOnBuild is enabled to consume the "nuget feed" versus local feed
the breaking change is for MessagePack in my scenario so it's not a simple one ;)
Collin J. Sutton
@insaneinside
Hey folks, new user here. Trying to benchmark something that (in setup) requires creation of a resource, whose location isn't known before it's created but needs to be communicated to the benchmark methods somehow. Is this (a) not possible, (b) a bad idea/wrong way to do things, (c) an indication that I'm using the wrong benchmarking library, or (d) all of the above?
Adam Sitnik
@adamsitnik
hi @insaneinside you are fine ;) what kind of resource are we talking about?
Collin J. Sutton
@insaneinside
@adamsitnik , I'm specifically comparing how a filesystem search heuristic scales depending on certain settings. My plan was to create a set of test directories somewhere in %TEMP%, and compare performance between settings, using [Params("scaledirname1", "scaledirname2", "scaledirname3")] etc, but still need to communicate the root directory for each scale directory. (Yes, I'm aware of the fact that all sorts of things will affect benchmarks based on disk I/O, and am not yet worrying about it.)
Adam Sitnik
@adamsitnik
@insaneinside in such case, most probably the simplest solution would be to create the corresponding directories in the [GlobalSeutp] method based on the value of [Params]
an alternative is to use env vars to pass something to the process
Albert Hives
@ahives
Hi, is it possible to run multiple benchmark classes in the same Program.cs?
Tomasz Kajetan Stańczak
@tkstanczak
hi, is it normal that after selecting a benchmark in the console from BenchmarkSwitcher all the other jobs are executed later
also, is it possible to disable warnings?
liek this -> The minimum observed iteration time is 1.9000 us which is very smal
l. It's recommended to increase it.
Tomasz Kajetan Stańczak
@tkstanczak
the case here is that I know (more or less) what I am doing - I am trying to benchmark memory only and I do not care about the times
Tomasz Kajetan Stańczak
@tkstanczak
I know I can contribute :) but in case I can also make a comment that maybe you can place the table after the warnings and after the legend so there would be no need to scroll up after the benchmark run
the legend is only needed for the users at the beginning, warnings too, and then you often would run a benchmark and want to see the results after it finishes
I end up scrolling up and looking for tables after each run
Stephan Grein
@stephanmg
hey folks.
is there any update on the possibility to use BenchmarkDotNet with Unity?
Arunprasath
@csearun

While migrating webapplication from .netcore 2.1 to .netcore 3.1, I am getting runtime exception as

System.InvalidOperationException: 'The CORS protocol does not allow specifying a wildcard (any) origin and credentials at the same time. Configure the CORS policy by listing individual origins if credentials needs to be supported.'
How to resolve System.InvalidOperationException?

TeBeCo
@tebeco
not sure you're in the good channel here, it does'nt seems related to benchmark at all
Tebjan Halm
@tebjan
Hi, is there any guide on how to do a benchmark programmatically?
without using attributes... just: start measure (with params), do something (several times), stop, get results
TeBeCo
@tebeco
the idea of attribute i suppose is to avoid the buggy measure you would have by dirrectly calling code
because you would have to warmup stuff and so on
Tebjan Halm
@tebjan
the problem is, i am in an environment that doesn't do static compilation/reflection. it's a live-programming environment that does compilation at runtime: https://visualprogramming.net/