{"action":"closed","issue":{"url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/issues/279","repository_url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet","labels_url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/issues/279/labels{/name}","comments_url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/issues/279/comments","events_url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/issues/279/events","html_url":"https://github.com/PerfDotNet/BenchmarkDotNet/issues/279","id":182084382,"number":279,"title":"[Suggestion]: Simplify the configuration API","user":{"login":"ig-sinicyn","id":11225241,"avatar_url":"https://avatars.githubusercontent.com/u/11225241?v=3","gravatar_id":"","url":"https://api.github.com/users/ig-sinicyn","html_url":"https://github.com/ig-sinicyn","followers_url":"https://api.github.com/users/ig-sinicyn/followers","following_url":"https://api.github.com/users/ig-sinicyn/following{/other_user}","gists_url":"https://api.github.com/users/ig-sinicyn/gists{/gist_id}","starred_url":"https://api.github.com/users/ig-sinicyn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ig-sinicyn/subscriptions","organizations_url":"https://api.github.com/users/ig-sinicyn/orgs","repos_url":"https://api.github.com/users/ig-sinicyn/repos","events_url":"https://api.github.com/users/ig-sinicyn/events{/privacy}","received_events_url":"https://api.github.com/users/ig-sinicyn/received_events","type":"User","site_admin":false},"labels":[{"id":52535230,"url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/labels/question","name":"question","color":"cc317c","default":true}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2016-10-10T18:39:27Z","updated_at":"2016-11-07T16:01:29Z","closed_at":"2016-11-07T16:01:29Z","body":"All of following is not a strong opinion, just fresh impressions on trying to use the current codebase.\n1. How much settings do we need to alter N of iterations?\n   Here they are:\n   \n   ```\n   RunMode.Default.InvocationCount / IterationTime\n   AccuracyMode.Default.MinInvokeCount / AccuracyMode.Default.MinIterationTime\n   RunMode.Default.LaunchCount\n   RunMode.Default.TargetCount\n   RunMode.Default.WarmupCount\n   RunMode.Default.UnrollFactor\n   OperationsPerInvoke attribute\n   ```\n   \n   can these be simplified down to\n   \n   ```\n   RunMode.Default.TargetCount / TargetTime\n   RunMode.Default.WarmupCount / WarmupTime\n   RunMode.Default.UnrollFactor => OperationsPerInvoke\n   ```\n   \n   :scrathes_head:?\n2. Please, consider to use human-oriented API. The creation of a new job should not look like this:\n   \n   ```\n             var job = Job.Default\n                 .WithLaunchCount(1)\n                 .WithWarmupCount(100)\n                 .WithTargetCount(300)\n                 .WithUnrollFactor(1)\n                 .Mutate(\n                     new JobMutator(\"have no idea what\")\n                         .Add(RunMode.Default.RunStrategy.Mutate(RunStrategy.Throughput))\n                         .Add(RunMode.Default.InvocationCount.Mutate(1))\n                         .Add(GcMode.Default.Force.Mutate(false))\n                         .Add(InfrastructureMode.Default.Toolchain.Mutate(InProcessToolchain.Instance)))\n   ```\n   \n   Can freezable objects be used instead? [Fast prototype](https://gist.github.com/ig-sinicyn/b4cc36175a002f6c08f2eeb9f35faea2) to show what I'm talking about.\n"}}
{"actor":{"display_login":"AndreyAkinshin"}}