[
https://issues.apache.org/jira/browse/AVRO-934?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Doug Cutting updated AVRO-934:
------------------------------
Resolution: Fixed
Fix Version/s: (was: 1.5.4)
1.6.0
Assignee: A B
Status: Resolved (was: Patch Available)
I committed this. Thanks!
> Avro PHP has a performance issue - it appears to operate in O(N^2) time when
> decoding messages
> ----------------------------------------------------------------------------------------------
>
> Key: AVRO-934
> URL: https://issues.apache.org/jira/browse/AVRO-934
> Project: Avro
> Issue Type: Improvement
> Components: php
> Affects Versions: 1.5.4
> Environment: PHP 5.3.8, Windows or OSX
> Reporter: A B
> Assignee: A B
> Labels: avro, php
> Fix For: 1.6.0
>
> Attachments: 1.patch
>
>
> While decoding simple requests, observed that the time to decode was growing
> much faster than expected. A 25k file would take 3 seconds to decode while a
> 570k file was taking approximately 45 minutes. The Ruby implementation does
> not exhibit a similar issue; above 570k file takes about 3 seconds to decode.
> Profiled the code and found that the problem lies in AvroStringIO::read($len)
> - repeated calls to array_slice seem to cause the issue. Replaced the call to
> array_slice with the following and now the 570k file is processed in about 5
> seconds. I will submit the patch shortly as well but here is the new code:
> class AvroStringIO extends AvroIO
> {
> ...
> public function read($len)
> {
> $this->check_closed();
> //$read = array_slice($this->buffer, $this->current_index, $len);
> $read=array();
> for($i=$this->current_index; $i<($this->current_index+$len); $i++)
> $read []=$this->buffer[$i];
> ...
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira