Hi,

to pick this up once again: Did anybody do any benchmarks on this? I'm just trying to get some very rough numbers - 40000 setParameter calls with virtual path and not elements go from 0.22 seconds to 1.20 seconds. While this looks like a massive performance hit, does anybody have a clue how often setParameter()/setParameters() is called on a ParameterHolder in a typical szenario? Rough numbers would be sufficient. If we have 1000 calls on a standard dispatch, we loose 25 milliseconds by doing it the right way, if we have 10000 calls, we loose 250ms which seems far worse.

By the way - judging from the code I'd say that the AgaviArrayPathDefintion actually accepts malformed input.

cheers

felix


On Dec 11, 2008, at 7:49 PM, David Zülke wrote:

The problem is that it starts to get really ambiguous when you do

$ph->setParameters(array(
  'foo[bar]' => 'baz'
));

if we had to dissect *all* of those (and we would have to,
recursively!) then that would imply a massive performance impact.

So, if we changed this, setParameters() would remain "old-style", and
that's just as bad if you ask me (and probably the reason why
setParameter() doesn't work this way.

Thoughts, everyone?

- David



Am 11.12.2008 um 16:33 schrieb Benjamin Börngen-Schmidt:

I would agree with Felix, even though I never used the possibility of
setting an array as parameter (cuz I didn't know it'll and i didn't
need it yet), but when looking at the code I would expect the same as
Felix.
Why would I want to have the Parameters Name containing brackets? If I
not want to access my value i saved there?

Cheers
Benjamin


Am 11.12.2008 um 16:09 schrieb David Zülke:

Nah, that's intentional. The idea is that you can set a literal
"foo[bar]" if you need to (and that will be returned if you get it
again instead of the entry "bar" in "foo").

Changing that would break BC; I believe; we're relying on it in a
couple of places, I think.

- David




Am 11.12.2008 um 14:47 schrieb Felix Gilcher:

Hey,

while writing the tests for #955 I stumbled over the behavior
demonstrated in this snippet:

$p = new AgaviParameterHolder();
$p->setParameter('foo', array('bar' => 'baz', 'ball' => 'round'));
$p->getParameter('foo[bar]'); // baz
$p->setParameter('foo[bar]', 'foo');
$p->getParameter('foo'); // hmm:  array('bar' => 'baz', 'ball' =>
'round'), expected: array('bar' => 'foo', 'ball' => 'round')
$p->getParameter('foo[bar]'); // foo
$p->unsetParameter('foo[bar]'); // foo
$p->getParameter('foo[bar]'); // baz !!! (instead of null)

This is triggered by AgaviParameterHolder::setParameter() not trying to resolve array parts in the name like get/has/unsetParameter() do.
I'd call that unexpected and I'd say it's a bug - it took me nearly
15 minutes to figure out what I was doing wrong in my testcase.
However it's a bit unclear how to fix that...

Any insights?

cheers

felix

--
Felix Gilcher

Bitextender GmbH
Paul-Heyse-Str. 6
D-80336 München

T: +49 89 57 08 15 16
F: +49 89 57 08 15 17
M: +49 172 840 88 28

[email protected]
http://bitextender.com/

Amtsgericht München, HRB 174280
Geschäftsführer: David Zülke, Florian Clever

_______________________________________________
Agavi Dev Mailing List
[email protected]
http://lists.agavi.org/mailman/listinfo/dev


_______________________________________________
Agavi Dev Mailing List
[email protected]
http://lists.agavi.org/mailman/listinfo/dev


_______________________________________________
Agavi Dev Mailing List
[email protected]
http://lists.agavi.org/mailman/listinfo/dev



_______________________________________________
Agavi Dev Mailing List
[email protected]
http://lists.agavi.org/mailman/listinfo/dev


--
Felix Gilcher

Bitextender GmbH
Paul-Heyse-Str. 6
D-80336 München

T: +49 89 57 08 15 16
F: +49 89 57 08 15 17
M: +49 172 840 88 28

[email protected]
http://bitextender.com/

Amtsgericht München, HRB 174280
Geschäftsführer: David Zülke, Florian Clever

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
Agavi Dev Mailing List
[email protected]
http://lists.agavi.org/mailman/listinfo/dev

Reply via email to