| Newsgroups |
php.general |
| Message-ID |
<[email protected]> |
you could read this
http://xdebug.org/docs/execution_trace
and then parse trace files to get the memory usage
create a global to store user functions, I think user function do not
populate get_defined_functions(); until the function is called;
$t = get_defined_functions();
$userFunctions = $t['user'];
$file = xdebug_get_tracefile_name();
parse the file and then create a function to call the said variable.
I think you can figure it out.
[email protected] wrote:
> Currently it's mostly procedural with some components that are OO. I
> suspect most of the memory sinks are large arrays (we have a lot of
> them), but I am not certain of that. Hence my interest in more accurate
> investigation tools.
>
> --Larry Garfield
>
> [email protected] wrote:
>> couple questions Larry is this application composed of classes or
>> straight up no holes barred procedural code?
>>
>> [email protected] wrote:
>>> That's not really what I'm after. Let me try an example:
>>>
>>> function foo($id) {
>>> static $foos = array();
>>>
>>> if (empty($foos[$id]) {
>>> $foos[$id] = load_foo($id);
>>> }
>>> return $foos[$id];
>>> }
>>>
>>> When load_foo() is slow (e.g., lots of DB traffic or remote-server
>>> calls or whatever), such caching can have a significant performance
>>> boost. Sometime after foo() has been called 15 times from 30 places
>>> in code, when I get to the end of the request (or just every time I
>>> call foo() would be fine) I want to be able to do something like:
>>>
>>> $cost = get_memory_used_by($foos);
>>>
>>> So that I can determine how much memory that caching is costing me
>>> over the lifetime of the page, and determine if it's a worthwhile
>>> trade-off.
>>>
>>> --Larry Garfield
>>>
>>> [email protected] wrote:
>>>> function check_memory_usage(&$memory)
>>>> {
>>>> $memory[] = memory_get_usage();
>>>> return $memory;
>>>> }
>>>>
>>>> something like this?
>>>> you can put it wherever you like and returns an array for further
>>>> processing. You could optionally add a second argument to set the
>>>> index to a name and check if the name exists to add 1 to the end of
>>>> the name so your indexes stay maintained.
>>>>
>>