Re: Is there any overhead iterating over a pointer using a slice?

2016-06-01 Thread Gary Willoughby via Digitalmars-d-learn

On Tuesday, 31 May 2016 at 20:52:20 UTC, Johan Engelen wrote:

On Tuesday, 31 May 2016 at 18:55:18 UTC, Gary Willoughby wrote:


If I have a pointer and iterate over it using a slice, like 
this:


T* foo = 

foreach (element; foo[0 .. length])
{
...
}

Is there any overhead compared with pointer arithmetic in a 
for loop?


Use the assembly output of your compiler to check! :-)  It's 
fun to look at.

For example, with GDC:
http://goo.gl/Ur9Srv

No difference.

cheers,
  Johan


That's pretty nice.


Re: Is there any overhead iterating over a pointer using a slice?

2016-05-31 Thread Johan Engelen via Digitalmars-d-learn

On Tuesday, 31 May 2016 at 18:55:18 UTC, Gary Willoughby wrote:


If I have a pointer and iterate over it using a slice, like 
this:


T* foo = 

foreach (element; foo[0 .. length])
{
...
}

Is there any overhead compared with pointer arithmetic in a for 
loop?


Use the assembly output of your compiler to check! :-)  It's fun 
to look at.

For example, with GDC:
http://goo.gl/Ur9Srv

No difference.

cheers,
  Johan



Is there any overhead iterating over a pointer using a slice?

2016-05-31 Thread Gary Willoughby via Digitalmars-d-learn

In relation to this thread:

http://forum.dlang.org/thread/ddckhvcxlyuvuiyaz...@forum.dlang.org

Where I asked about slicing a pointer, I have another question:

If I have a pointer and iterate over it using a slice, like this:

T* foo = 

foreach (element; foo[0 .. length])
{
...
}

Is there any overhead compared with pointer arithmetic in a for 
loop?


Re: Is there any overhead iterating over a pointer using a slice?

2016-05-31 Thread Adam D. Ruppe via Digitalmars-d-learn

On Tuesday, 31 May 2016 at 18:55:18 UTC, Gary Willoughby wrote:
Is there any overhead compared with pointer arithmetic in a for 
loop?


Very very little. The slice will ensure start and stop indexes 
are in bounds before the loop (and throw an RangeError if it 
isn't), but inside the loop, it should generate exactly the same 
code.