Re: subs and variables speed question
> On 2/11/19 3:27 AM, Timo Paulssen wrote: > > WHICH doesn't give you a numerical value. just print it as it is. > > > $ p6 'sub a (Buf $b) { say $b.WHICH }; my $c = Buf.new(1,2,3); say > $c.WHICH; a($c);' > Buf|71848984 > Buf|71848984 > > If "moarvm has a moving garbage collector" moves my 100 MB+ buffer > around, "I am in a heap of trouble". The buffer lives one indirection (aka pointer) away from the part that is garbage-collector managed, so moving the object doesn't make a difference here, luckily.
Re: subs and variables speed question
On 11/02/2019 07:12, ToddAndMargo via perl6-users wrote: WHERE is pretty sweet command! $ p6 'sub a (Buf $b) { say $b.WHERE.base(0x10) }; my $c = Buf.new(1,2,3); say $c.WHERE.base(0x10); a($c);' 7F385D41334C 7F385D41334C On 11/02/2019 12:16, ToddAndMargo via perl6-users wrote: On 2/11/19 2:52 AM, Timo Paulssen wrote: Please be aware that WHERE will give you the actual memory address of an object, but moarvm has a moving garbage collector, which means that objects can change their memory location. at the moment it will only happen up to two times, i believe. you'll probably have a better result with .WHICH for what you want to achieve. >> >> $ p6 'sub a (Buf $b) { say $b.WHICH.base(0x10) }; my $c = >> Buf.new(1,2,3); say $c.WHICH.base(0x10); a($c);' >> No such method 'base' for invocant of type 'ObjAt'. Did you mean any >> of these? >> Hash >> hash >> take >> >>in block at -e line 1 >> >> On 2/11/19 3:27 AM, Timo Paulssen wrote: > WHICH doesn't give you a numerical value. just print it as it is. $ p6 'sub a (Buf $b) { say $b.WHICH }; my $c = Buf.new(1,2,3); say $c.WHICH; a($c);' Buf|71848984 Buf|71848984 If "moarvm has a moving garbage collector" moves my 100 MB+ buffer around, "I am in a heap of trouble".
Re: subs and variables speed question
WHICH doesn't give you a numerical value. just print it as it is. On 11/02/2019 12:16, ToddAndMargo via perl6-users wrote: > On 2/11/19 2:52 AM, Timo Paulssen wrote: >> Please be aware that WHERE will give you the actual memory address of an >> object, but moarvm has a moving garbage collector, which means that >> objects can change their memory location. at the moment it will only >> happen up to two times, i believe. >> >> you'll probably have a better result with .WHICH for what you want to >> achieve. >> >> On 11/02/2019 07:12, ToddAndMargo via perl6-users wrote: >>> WHERE is pretty sweet command! >>> >>> >>> $ p6 'sub a (Buf $b) { say $b.WHERE.base(0x10) }; my $c = >>> Buf.new(1,2,3); say $c.WHERE.base(0x10); a($c);' >>> >>> 7F385D41334C >>> 7F385D41334C > > $ p6 'sub a (Buf $b) { say $b.WHICH.base(0x10) }; my $c = > Buf.new(1,2,3); say $c.WHICH.base(0x10); a($c);' > No such method 'base' for invocant of type 'ObjAt'. Did you mean any > of these? > Hash > hash > take > > in block at -e line 1 > > >
Re: subs and variables speed question
On 2/11/19 2:52 AM, Timo Paulssen wrote: Please be aware that WHERE will give you the actual memory address of an object, but moarvm has a moving garbage collector, which means that objects can change their memory location. at the moment it will only happen up to two times, i believe. you'll probably have a better result with .WHICH for what you want to achieve. On 11/02/2019 07:12, ToddAndMargo via perl6-users wrote: WHERE is pretty sweet command! $ p6 'sub a (Buf $b) { say $b.WHERE.base(0x10) }; my $c = Buf.new(1,2,3); say $c.WHERE.base(0x10); a($c);' 7F385D41334C 7F385D41334C $ p6 'sub a (Buf $b) { say $b.WHICH.base(0x10) }; my $c = Buf.new(1,2,3); say $c.WHICH.base(0x10); a($c);' No such method 'base' for invocant of type 'ObjAt'. Did you mean any of these? Hash hash take in block at -e line 1 -- ~~ Computers are like air conditioners. They malfunction when you open windows ~~
Re: subs and variables speed question
Please be aware that WHERE will give you the actual memory address of an object, but moarvm has a moving garbage collector, which means that objects can change their memory location. at the moment it will only happen up to two times, i believe. you'll probably have a better result with .WHICH for what you want to achieve. On 11/02/2019 07:12, ToddAndMargo via perl6-users wrote: > WHERE is pretty sweet command! > > > $ p6 'sub a (Buf $b) { say $b.WHERE.base(0x10) }; my $c = > Buf.new(1,2,3); say $c.WHERE.base(0x10); a($c);' > > 7F385D41334C > 7F385D41334C
Re: subs and variables speed question
On 2/9/19 2:28 PM, ToddAndMargo via perl6-users wrote: On 2/9/19 1:56 PM, ToddAndMargo via perl6-users wrote: Hi All, sub xxx( Buf $YugeBuf is ro ) {some midricle} Is $YugeBuf (up to 100 MB) a copy of just the structure? I don't want the time time of a copy. Many thanks, -T Without all the typos: Hi All, sub xxx( Buf $YugeBuf is ro ) {some miricle} Is $YugeBuf (up to 100 MB) a copy of the entire variable or just the structure? I don't want the time hit of a copy. Many thanks, -T It is not a duplicate: [20:30] A question for the developers. sub xxx( Buf $YugeBuf is ro ) {some miricle} Is $YugeBuf (up to 100 MB) a copy of the entire variable or just the structure? I don't want the time hit of a copy [20:32] == Cabanossi [~cabano...@ppp-88-217-73-102.dynamic.mnet-online.de] has joined #perl6 [20:36] == kurahaupo_ [~kuraha...@pa49-195-197-60.pa.nsw.optusnet.com.au] has joined #perl6 [20:36] == kurahaupo [~kurahaupo@125.254.10.75] has quit [Read error: Connection reset by peer] [20:36] ToddAndMargo: it seems to be [20:37] == kurahaupo_ [~kuraha...@pa49-195-197-60.pa.nsw.optusnet.com.au] has quit [Read error: Connection reset by peer] [20:38] p6: sub a (Buf $b) { say $b.WHERE }; my $c = Buf.new(1,2,3); say $c.WHERE; a($c) [20:38] <+camelia> rakudo-moar d904b7048: OUTPUT: «139828431461220139828431461220» [20:39] == kurahaupo [~kurahaupo@125.254.10.75] has joined #perl6 [20:45] == kurahaupo [~kurahaupo@125.254.10.75] has quit [Read error: Connection reset by peer] [20:45] Err, I meant that to be "Buf $b is readonly" but result is the same. [20:46] == kurahaupo [~kurahaupo@125.254.10.75] has joined #perl6 [20:48] == aindilis [~aindi...@172-12-3-117.lightspeed.sgnwmi.sbcglobal.net] has quit [Ping timeout: 240 seconds] [20:49] Even when you use "is copy", the copy doesn't get made until after the value has been modified. Seems Rakudo is smart in that regards: [20:49] p6: sub a ($a is copy) { say $a.WHERE; $a++; say $a.WHERE}; my $b = 1; say $b.WHERE; a($b) [20:49] <+camelia> rakudo-moar d904b7048: OUTPUT: «140226293132168140226293132168140226293132208» [20:49] == aindilis [~aindi...@172-12-3-117.lightspeed.sgnwmi.sbcglobal.net] has joined #perl6 [20:53] Just be aware that readonly doesn't necessarily mean what you might think it does: [20:53] p6: sub a (Buf $b is readonly) { $b[0] = 0}; my $c = Buf.new(1,2,3); a($c); say $c [20:53] <+camelia> rakudo-moar d904b7048: OUTPUT: «Buf:0x<00 02 03>»
Re: subs and variables speed question
On 2/9/19 2:28 PM, ToddAndMargo via perl6-users wrote: On 2/9/19 1:56 PM, ToddAndMargo via perl6-users wrote: Hi All, sub xxx( Buf $YugeBuf is ro ) {some midricle} Is $YugeBuf (up to 100 MB) a copy of just the structure? I don't want the time time of a copy. Many thanks, -T Without all the typos: Hi All, sub xxx( Buf $YugeBuf is ro ) {some miricle} Is $YugeBuf (up to 100 MB) a copy of the entire variable or just the structure? I don't want the time hit of a copy. Many thanks, -T It is not a duplicate: [20:30] A question for the developers. sub xxx( Buf $YugeBuf is ro ) {some miricle} Is $YugeBuf (up to 100 MB) a copy of the entire variable or just the structure? I don't want the time hit of a copy [20:32] == Cabanossi [~cabano...@ppp-88-217-73-102.dynamic.mnet-online.de] has joined #perl6 [20:36] == kurahaupo_ [~kuraha...@pa49-195-197-60.pa.nsw.optusnet.com.au] has joined #perl6 [20:36] == kurahaupo [~kurahaupo@125.254.10.75] has quit [Read error: Connection reset by peer] [20:36] ToddAndMargo: it seems to be [20:37] == kurahaupo_ [~kuraha...@pa49-195-197-60.pa.nsw.optusnet.com.au] has quit [Read error: Connection reset by peer] [20:38] p6: sub a (Buf $b) { say $b.WHERE }; my $c = Buf.new(1,2,3); say $c.WHERE; a($c) [20:38] <+camelia> rakudo-moar d904b7048: OUTPUT: «139828431461220139828431461220» [20:39] == kurahaupo [~kurahaupo@125.254.10.75] has joined #perl6 [20:45] == kurahaupo [~kurahaupo@125.254.10.75] has quit [Read error: Connection reset by peer] [20:45] Err, I meant that to be "Buf $b is readonly" but result is the same. [20:46] == kurahaupo [~kurahaupo@125.254.10.75] has joined #perl6 [20:48] == aindilis [~aindi...@172-12-3-117.lightspeed.sgnwmi.sbcglobal.net] has quit [Ping timeout: 240 seconds] [20:49] Even when you use "is copy", the copy doesn't get made until after the value has been modified. Seems Rakudo is smart in that regards: [20:49] p6: sub a ($a is copy) { say $a.WHERE; $a++; say $a.WHERE}; my $b = 1; say $b.WHERE; a($b) [20:49] <+camelia> rakudo-moar d904b7048: OUTPUT: «140226293132168140226293132168140226293132208» [20:49] == aindilis [~aindi...@172-12-3-117.lightspeed.sgnwmi.sbcglobal.net] has joined #perl6 [20:53] Just be aware that readonly doesn't necessarily mean what you might think it does: [20:53] p6: sub a (Buf $b is readonly) { $b[0] = 0}; my $c = Buf.new(1,2,3); a($c); say $c [20:53] <+camelia> rakudo-moar d904b7048: OUTPUT: «Buf:0x<00 02 03>»
Re: subs and variables speed question
WHERE is pretty sweet command! $ p6 'sub a (Buf $b) { say $b.WHERE.base(0x10) }; my $c = Buf.new(1,2,3); say $c.WHERE.base(0x10); a($c);' 7F385D41334C 7F385D41334C
Re: subs and variables speed question
On 2/9/19 1:56 PM, ToddAndMargo via perl6-users wrote: Hi All, sub xxx( Buf $YugeBuf is ro ) {some midricle} Is $YugeBuf (up to 100 MB) a copy of just the structure? I don't want the time time of a copy. Many thanks, -T Without all the typos: Hi All, sub xxx( Buf $YugeBuf is ro ) {some miricle} Is $YugeBuf (up to 100 MB) a copy of the entire variable or just the structure? I don't want the time hit of a copy. Many thanks, -T
subs and variables speed question
Hi All, sub xxx( Buf $YugeBuf is ro ) {some midricle} Is $YugeBuf (up to 100 MB) a copy of just the structure? I don't want the time time of a copy. Many thanks, -T