Skip to content

Commit 8b2aeb3

Browse files
committed
fixing the docs; removing the bitbucket mention from the readme
1 parent 02bac09 commit 8b2aeb3

File tree

3 files changed

+13
-13
lines changed

3 files changed

+13
-13
lines changed

Extensions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141

4242
## Companions in this repository
4343

44-
Companion packages do not depend on DryIoc package.
44+
Companion packages different from the Extensions because they do not depend on the DryIoc package.
4545

4646
### DryIocAttributes
4747

README.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ DryIoc is fast, small, full-featured IoC Container for .NET
3434
- [Extensions and Companions](Extensions.md)
3535
- [Documentation][WikiHome]
3636
- [Contribution guide](CONTRIBUTING.md)
37-
- Check the old issues on [BitBucket](https://bitbucket.org/dadhi/dryioc)
38-
- Two original parts of DryIoc are now separate projects: [FastExpressionCompiler](https://github.com/dadhi/FastExpressionCompiler) and [ImTools](https://github.com/dadhi/ImTools)
37+
- Two original parts of the DryIoc are now the separate projects: [FastExpressionCompiler](https://github.com/dadhi/FastExpressionCompiler) and [ImTools](https://github.com/dadhi/ImTools)
3938

4039
## Benchmarks
4140

@@ -172,8 +171,8 @@ Intel Core i7-8750H CPU 2.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical
172171
* Service lifetime control via *Reuse* and lifetime scoping:
173172
* Nested disposable scopes with optional names
174173
* Optional ambient scope context
175-
* Reuse types: `Transient`, `Singleton`, `Scoped` in multiple flavors (including scoping to the specific service ancestor in the object graph)
176-
* Option to `useParentReuse` and to `useDecorateeReuse` for decorators
174+
* Reuse types: `Transient`, `Singleton`, `Scoped` in multiple flavors including the scoping to the specific service ancestor in the object graph
175+
* Option to `useParentReuse` and to `useDecorateeReuse` (for decorators)
177176
* Option to `preventDisposal` and `weaklyReferenced`
178177
* Open-generics support including type constraints, variance, complex nesting and recurring definitions.
179178
* Constructor parameters injection and optional property and field injection.
@@ -183,7 +182,7 @@ Intel Core i7-8750H CPU 2.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical
183182
* Nested with the relative order control
184183
* Generic and non-generic
185184
* With the Reuse possibly different from the decorated service
186-
* Decorators of wrapped service
185+
* Decorators of the Wrappers
187186
* [Wrappers](https://github.com/dadhi/DryIoc/blob/master/docs/DryIoc.Docs/Wrappers.md):
188187
* Service collections: `T[]`, `IEnumerable<T>`, `LazyEnumerable<T>`, and `I(ReadOnly)Collection|List<T>`
189188
* Single service wrappers: `Lazy<T>`, `Func<T>`, `Meta<TMetadata, T>` or `Tuple<TMetadata, T>`, `KeyValuePair<TKey, T>`

docs/DryIoc.Docs/ResolutionPipeline.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,29 @@
99

1010
## Overview
1111

12-
What happens when you call `container.Resolve<X>();` for the same service `X` multiple times in a sequence assuming that the `X` is not a singleton*:
12+
What happens when you call the `container.Resolve<X>()` for the service `X` multiple times in a sequence assuming that the `X` is not a singleton*:
1313

14-
1. The first call will **discover and construct the expression tree** of `X` object graph, **interpret** the expression to get the service, and if succeeded will **cache the expression** in resolution cache.
15-
2. The second call will find cached expression, will **compile** it to delegate, then it will **replace the cached expression with the delegate** and will invoke the delegate to get the service.
14+
1. The first call will **discover and construct the expression tree** of `X` object graph, will **interpret** the expression to get the service, and if succeeded will **cache the expression** in the resolution cache, and will return the interpreted service.
15+
2. The second call will find the cached expression, will **compile** it to the delegate, then it will **replace the cached expression with the delegate** and will invoke the delegate to get the service.
1616
3. The third call will find the cached delegate and invoke it.
1717

18-
singleton* - those are always interpreted (cannot be changed via rules) and injected in object graph as `ConstantExpression` unless wrapped in Func or Lazy wrappers (which create singleton when consumer demand).
19-
This is because they need to be created once and one-time interpretation is faster than compilation+invocation.
18+
singleton* - those are always interpreted (this cannot be changed via rules) and injected in the object graph as a `ConstantExpression` unless wrapped in `Func` or `Lazy` wrappers (which create the singleton on demand).
19+
The reason for that is the singletons are created once and the one-time interpretation is faster than the compilation+invocation.
2020

2121

2222
## Relative Performance
2323

24+
- Delegate invocation is the fastest
2425
- Expression interpretation is 10x times slower than the delegate invocation
25-
- Delegate compilation is 100x slower than interpretation.
26+
- Delegate compilation is 100x slower than the interpretation.
2627

2728
That's mean you need **once** to spend 100x more time than interpretation to get 10x boost,
2829
and DryIoc by default is not paying this price.
2930

3031

3132
## Rules.WithUseInterpretation
3233

33-
The compilation (essentially `System.Reflection.Emit`) is not supported by all targets, e.g. Xamarin iOS. In this case, you may specify to always use interpretation via
34+
The compilation (essentially `System.Reflection.Emit`) is not supported by all targets, e.g. by the Xamarin iOS. In this case you may specify to always use the interpretation via the rule:
3435

3536
```cs
3637
var c = new Container(rules => rules.WithUseInterpretation());

0 commit comments

Comments
 (0)