← Index
NYTProf Performance Profile   « block view • line view • sub view »
For 05.Domain_and_Item.t
  Run on Tue May 4 17:21:41 2010
Reported on Tue May 4 17:22:34 2010

File /usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Memcached/libmemcached.pm
Statements Executed 21
Statement Execution Time 1.07ms
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
24125.18ms5.18msMemcached::libmemcached::::memcached_getMemcached::libmemcached::memcached_get (xsub)
17124.16ms4.16msMemcached::libmemcached::::memcached_setMemcached::libmemcached::memcached_set (xsub)
3121.63ms1.63msMemcached::libmemcached::::memcached_flushMemcached::libmemcached::memcached_flush (xsub)
1111.00ms1.13msMemcached::libmemcached::::BEGIN@21Memcached::libmemcached::BEGIN@21
112474µs474µsMemcached::libmemcached::::DESTROYMemcached::libmemcached::DESTROY (xsub)
5832206µs206µsMemcached::libmemcached::::errstrMemcached::libmemcached::errstr (xsub)
11257µs57µsMemcached::libmemcached::::memcached_createMemcached::libmemcached::memcached_create (xsub)
11224µs24µsMemcached::libmemcached::::memcached_server_addMemcached::libmemcached::memcached_server_add (xsub)
11115µs27µsMemcached::libmemcached::::BEGIN@3Memcached::libmemcached::BEGIN@3
11110µs47µsMemcached::libmemcached::::BEGIN@18Memcached::libmemcached::BEGIN@18
1117µs45µsMemcached::libmemcached::::BEGIN@19Memcached::libmemcached::BEGIN@19
1117µs10µsMemcached::libmemcached::::BEGIN@4Memcached::libmemcached::BEGIN@4
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Memcached::libmemcached;
2
3322µs239µs
# spent 27µs (15+12) within Memcached::libmemcached::BEGIN@3 which was called # once (15µs+12µs) by SimpleDB::Class::Cache::BEGIN@31 at line 3
use warnings;
# spent 27µs making 1 call to Memcached::libmemcached::BEGIN@3 # spent 12µs making 1 call to warnings::import
4330µs212µs
# spent 10µs (7+3) within Memcached::libmemcached::BEGIN@4 which was called # once (7µs+3µs) by SimpleDB::Class::Cache::BEGIN@31 at line 4
use strict;
# spent 10µs making 1 call to Memcached::libmemcached::BEGIN@4 # spent 3µs making 1 call to strict::import
5
6=head1 NAME
7
8Memcached::libmemcached - Thin fast full interface to the libmemcached client API
9
10=head1 VERSION
11
12Version 0.3102 (with libmemcached-0.31 embedded)
13
14=cut
15
161600nsour $VERSION = '0.3102';
17
18325µs284µs
# spent 47µs (10+37) within Memcached::libmemcached::BEGIN@18 which was called # once (10µs+37µs) by SimpleDB::Class::Cache::BEGIN@31 at line 18
use Carp;
# spent 47µs making 1 call to Memcached::libmemcached::BEGIN@18 # spent 37µs making 1 call to Exporter::import
19322µs284µs
# spent 45µs (7+38) within Memcached::libmemcached::BEGIN@19 which was called # once (7µs+38µs) by SimpleDB::Class::Cache::BEGIN@31 at line 19
use base qw(Exporter);
# spent 45µs making 1 call to Memcached::libmemcached::BEGIN@19 # spent 38µs making 1 call to base::import
20
213237µs21.17ms
# spent 1.13ms (1.00+129µs) within Memcached::libmemcached::BEGIN@21 which was called # once (1.00ms+129µs) by SimpleDB::Class::Cache::BEGIN@31 at line 21
use Memcached::libmemcached::API;
# spent 1.13ms making 1 call to Memcached::libmemcached::BEGIN@21 # spent 37µs making 1 call to Exporter::import
22182µs225µsour @EXPORT_OK = (
23 libmemcached_functions(),
24 libmemcached_constants(),
25);
2613µs176µsour %EXPORT_TAGS = libmemcached_tags();
27
281600nsrequire XSLoader;
291634µs1623µsXSLoader::load('Memcached::libmemcached', $VERSION);
# spent 623µs making 1 call to XSLoader::load
30
31=head1 SYNOPSIS
32
33 use Memcached::libmemcached;
34
35 $memc = memcached_create();
36
37 memcached_server_add($memc, "localhost");
38
39 memcached_set($memc, $key, $value);
40
41 $value = memcached_get($memc, $key);
42
43=head1 DESCRIPTION
44
45Memcached::libmemcached is a very thin, highly efficient, wrapper around the
46libmemcached library. It's implemented almost entirely in C.
47
48It gives full access to the rich functionality offered by libmemcached.
49libmemcached is fast, light on memory usage, thread safe, and provide full
50access to server side methods.
51
52 - Synchronous and Asynchronous support.
53 - TCP and Unix Socket protocols.
54 - A half dozen or so different hash algorithms.
55 - Implementations of the new cas, replace, and append operators.
56 - Man pages written up on entire API.
57 - Implements both modulo and consistent hashing solutions.
58
59(At the moment Memcached::libmemcached is very new and not all the functions in
60libmemcached have perl interfaces yet. We're focussing on the core
61infrastructure and the most common functions. It's usually trivial to add
62functions - just a few lines in libmemcached.xs, a few lines of documentation,
63and a few lines of testing. Volunteers welcome!)
64
65The libmemcached library documentation (which is bundled with this module)
66serves as the primary reference for the functionality.
67
68This documentation provides summary of the functions, along with any issues
69specific to this perl interface, and references to the documentation for the
70corresponding functions in the underlying library.
71
72For more information on libmemcached, see L<http://tangent.org/552/libmemcached.html>
73
74=head1 CONVENTIONS
75
76=head2 Terminology
77
78The term "memcache" is used to refer to the C<memcached_st> structure at the
79heart of the libmemcached library. We'll use $memc to represent this
80structure in perl code. (The libmemcached library documentation uses C<ptr>.)
81
82=head2 Traditional and Object-Oriented
83
84There are two ways to use the functionality offered by this module:
85
86B<*> You can import the functions you want to use and call them explicitly.
87
88B<*> Or, you can use $memc as an object and call most of the functions as methods.
89You can do that for any function that takes a $memc (ptr) as its first
90argument, which is almost all of them.
91
92Since the primary focus of this module is to be a thin wrapper around
93libmemcached, the bulk of this documentation describes the traditional
94functional interface.
95
96The object-oriented interface is mainly targeted at modules wishing to subclass
97Memcached::libmemcached, such as Cache::Memcached::libmemcached. For more information
98see L</OBJECT-ORIENTED INTERFACE>.
99
100=head2 Function Names and Arguments
101
102The function names in the libmemcached library have exactly the same names in
103Memcached::libmemcached.
104
105The function arguments are also the same as the libmemcached library and
106documentation, with two exceptions:
107
108B<*> There are no I<length> arguments. Wherever the libmemcached documentation
109shows a length argument (input or output) the corresponding argument doesn't
110exist in the Perl API because it's not needed.
111
112B<*> Some arguments are optional.
113
114Many libmemcached function arguments are I<output values>: the argument is the
115address of the value that the function will modify. For these the perl function
116will modify the argument directly if it can. For example, in this call:
117
118 $value = memcached_get($memc, $key, $flags, $rc);
119
120The $flags and $rc arguments are output values that are modified by the
121memcached_get() function.
122
123See the L</Type Mapping> section for the fine detail of how each argument type
124is handled.
125
126=head2 Return Status
127
128Most of the functions return an integer status value. This is shown as
129C<memcached_return> in the libmemcached documentation.
130
131In the perl interface this value is I<not> returned directly. Instead a simple
132boolean is returned: true for 'success', defined but false for some
133'unsuccessful' conditions like 'not found', and undef for all other cases (i.e., errors).
134
135All the functions documented below return this simple boolean value unless
136otherwise indicated.
137
138The actual C<memcached_return> integer value, and corresponding error message,
139for the last libmemcached function call can be accessed via the
140L</errstr> method.
141
142=head2 Unimplemented Functions
143
144Functions relating to managing lists of servers (memcached_server_push, and
145memcached_server_list) have not been implemenetd because they're not needed and
146likely to be deprecated by libmemcached.
147
148Functions relating to iterating through results (memcached_result_*) have not
149been implemented yet. They're not a priority because similar functionality is
150available via the callbacks. See L</set_callback_coderefs>.
151
152Functions relating to stats should be implemented soonish. Patches welcome!
153
154=cut
155
156=head1 EXPORTS
157
158All the public functions in libmemcached are available for import.
159
160All the public constants and enums in libmemcached are also available for import.
161
162Exporter tags are defined for each enum. This allows you to import groups of
163constants easily. For example, to enable consistent hashing you could use:
164
165 use Memcached::libmemcached qw(:memcached_behavior :memcached_server_distribution);
166
167 memcached_behavior_set($memc, MEMCACHED_BEHAVIOR_DISTRIBUTION(), MEMCACHED_DISTRIBUTION_CONSISTENT());
168
169The L<Exporter> module allows patterns in the import list, so to import all the
170functions, for example, you can use:
171
172 use Memcached::libmemcached qw(/^memcached/);
173
174Refer to L<Memcached::libmemcached::constants> for a full list of the available
175constants and the tags they are grouped by.
176
177=head1 FUNCTIONS
178
179=head2 Functions For Managing Memcaches
180
181=head3 memcached_create
182
183 my $memc = memcached_create();
184
185Creates and returns a 'memcache' that represents the state of
186communication with a set of memcached servers.
187See L<Memcached::libmemcached::memcached_create>.
188
189=head3 memcached_clone
190
191 my $memc = memcached_clone(undef, undef);
192
193XXX Not currently recommended for use.
194See L<Memcached::libmemcached::memcached_create>.
195
196=head3 memcached_free
197
198 memcached_free($memc);
199
200Frees the memory associated with $memc.
201After calling it $memc can't be used.
202See L<Memcached::libmemcached::memcached_create>.
203
204=head3 memcached_server_count
205
206 $server_count= memcached_server_count($memc);
207
208Returns a count of the number of servers
209associated with $memc.
210See L<Memcached::libmemcached::memcached_servers>.
211
212=head3 memcached_server_add
213
214 memcached_server_add($memc, $hostname, $port);
215
216Adds details of a single memcached server (accessed via TCP/IP) to $memc.
217See L<Memcached::libmemcached::memcached_servers>.
218
219=head3 memcached_server_add_unix_socket
220
221 memcached_server_add_unix_socket($memc, $socket_path);
222
223Adds details of a single memcached server (accessed via a UNIX domain socket) to $memc.
224See L<Memcached::libmemcached::memcached_servers>.
225
226=head3 memcached_behavior_set
227
228 memcached_behavior_set($memc, $option_key, $option_value);
229
230Changes the value of a particular option.
231See L<Memcached::libmemcached::memcached_behavior>.
232
233=head3 memcached_behavior_get
234
235 memcached_behavior_get($memc, $option_key);
236
237Get the value of a particular option.
238See L<Memcached::libmemcached::memcached_behavior>.
239
240=cut
241
242
243=head2 Functions for Setting Values
244
245See L<Memcached::libmemcached::memcached_set>.
246
247=head3 memcached_set
248
249 memcached_set($memc, $key, $value);
250 memcached_set($memc, $key, $value, $expiration, $flags);
251
252Set $value as the value of $key.
253$expiration and $flags are both optional and default to 0.
254
255=head3 memcached_add
256
257 memcached_add($memc, $key, $value);
258 memcached_add($memc, $key, $value, $expiration, $flags);
259
260Like L</memcached_set> except that an error is returned if $key I<is> already
261stored in the server.
262
263=head3 memcached_replace
264
265 memcached_replace($memc, $key, $value);
266 memcached_replace($memc, $key, $value, $expiration, $flags);
267
268Like L</memcached_set> except that an error is returned if $key I<is not> already
269error is returned.
270
271=head3 memcached_prepend
272
273 memcached_prepend($memc, $key, $value);
274 memcached_prepend($memc, $key, $value, $expiration, $flags);
275
276Prepend $value to the value of $key. $key must already exist.
277$expiration and $flags are both optional and default to 0.
278
279=head3 memcached_append
280
281 memcached_append($memc, $key, $value);
282 memcached_append($memc, $key, $value, $expiration, $flags);
283
284Append $value to the value of $key. $key must already exist.
285$expiration and $flags are both optional and default to 0.
286
287=head3 memcached_cas
288
289 memcached_cas($memc, $key, $value, $expiration, $flags, $cas)
290
291Overwrites data in the server stored as $key as long as $cas
292still has the same value in the server.
293
294Cas is still buggy in memached. Turning on support for it in libmemcached is
295optional. Please see memcached_behavior_set() for information on how to do this.
296
297XXX and the memcached_result_cas() function isn't implemented yet
298so you can't get the $cas to use.
299
300=cut
301
302=head2 Functions for Fetching Values
303
304See L<Memcached::libmemcached::memcached_get>.
305
306The memcached_fetch_result() and
307
308=head3 memcached_get
309
310 $value = memcached_get($memc, $key);
311 $value = memcached_get($memc, $key, $flags, $rc);
312
313Get and return the value of $key. Returns undef on error.
314
315Also updates $flags to the value of the flags stored with $value,
316and updates $rc with the return code.
317
318
319=head3 memcached_mget
320
321 memcached_mget($memc, \@keys);
322 memcached_mget($memc, \%keys);
323
324Triggers the asynchronous fetching of multiple keys at once. For multiple key
325operations it is always faster to use this function. You I<must> then use
326memcached_fetch() or memcached_fetch_result() to retrieve any keys found.
327No error is given on keys that are not found.
328
329Instead of this function, you'd normally use the L</mget_into_hashref> method.
330
331=head3 memcached_fetch
332
333 $value = memcached_fetch($memc, $key);
334 $value = memcached_fetch($memc, $key, $flag, $rc);
335
336Fetch the next $key and $value pair returned in response to a memcached_mget() call.
337Returns undef if there are no more values.
338
339If $flag is given then it will be updated to whatever flags were stored with the value.
340If $rc is given then it will be updated to the return code.
341
342This is similar to L</memcached_get> except its fetching the results from the previous
343call to L</memcached_mget> and $key is an output parameter instead of an input.
344Usually you'd just use the L</mget_into_hashref> method instead.
345
346=cut
347
348
349=head2 Functions for Incrementing and Decrementing Values
350
351=head3 memcached_increment
352
353 memcached_increment( $key, $offset, $new_value_out );
354
355Increments the integer value associated with $key by $offset and returns the new value in $new_value_out.
356See also L<Memcached::libmemcached::memcached_auto>.
357
358=head3 memcached_decrement
359
360 memcached_decrement( $key, $offset, $new_value_out );
361
362Decrements the integer value associated with $key by $offset and returns the new value in $new_value_out.
363See also L<Memcached::libmemcached::memcached_auto>.
364
365=cut
366
367
368=head2 Functions for Deleting Values from memcached
369
370See L<Memcached::libmemcached::memcached_delete>.
371
372=head3 memcached_delete
373
374 memcached_delete($memc, $key);
375 memcached_delete($memc, $key, $expiration);
376
377Delete $key. If $expiration is greater than zero then the key is deleted by
378memcached after that many seconds.
379
380=cut
381
382
383=head2 Functions for Accessing Statistics from memcached
384
385Not yet implemented.
386
387See L<Memcached::libmemcached::memcached_stats>.
388
389=cut
390
391
392=head2 Miscellaneous Functions
393
394=head2 memcached_lib_version
395
396 $version = memcached_lib_version()
397
398Returns a simple version string, like "0.15", representing the libmemcached
399version (version of the client library, not server).
400
401=head2 memcached_version
402
403 $version = memcached_version($memc)
404 ($version1, $version2, $version3) = memcached_version($memc)
405
406Returns the version of all memcached servers to respond to the version request.
407
408In scalar context returns a simple version string, like "1.2.3".
409In list context returns the individual version component numbers.
410Returns an empty list if there was an error.
411
412Note that the return value differs from that of the underlying libmemcached
413library memcached_version() function.
414
415=head2 memcached_verbosity
416
417 memcached_verbosity($memc, $verbosity)
418
419Modifies the "verbosity" of the memcached servers associated with $memc.
420See L<Memcached::libmemcached::memcached_verbosity>.
421
422=head3 memcached_flush
423
424 memcached_flush($memc, $expiration);
425
426Wipe clean the contents of associated memcached servers.
427See L<Memcached::libmemcached::memcached_flush>.
428
429=head2 memcached_quit
430
431 memcached_quit($memc)
432
433Disconnect from all currently connected servers and reset libmemcached state associated with $memc.
434Not normally called explicitly.
435See L<Memcached::libmemcached::memcached_quit>.
436
437=head3 memcached_strerror
438
439 $string = memcached_strerror($memc, $return_code)
440
441memcached_strerror() takes a C<memcached_return> value and returns a string describing the error.
442The string should be treated as read-only (it may be so in future versions).
443See also L<Memcached::libmemcached::memcached_strerror>.
444
445This function is rarely needed in the Perl interface because the return code is
446a I<dualvar> that already contains the error string.
447
448=cut
449
450=head2 Unsupported Functions
451
452=head3 (stats)
453=cut
454
455=head2 Grouping Keys On Servers
456
457Normally libmemcached hashes the $key value to select which memcached server to
458communicate with. If you have several keys relating to a single object then
459it's very likely that the corresponding values will be stored in different
460memcached servers.
461
462It would be more efficient, in general, when setting and getting multiple
463related values, if it was possible to specify a different value to be hashed to
464select which memcached server to communicate with. With libmemcached, you can.
465
466Most of the functions for setting and getting values have C<*_by_key> variants
467for exactly this reason. These all have an extra $master_key parameter
468immediately after the $memc parameter. For example:
469
470 memcached_mget($memc, \%keys, \%dest);
471
472 memcached_mget_by_key($memc, $maskey_key, \%keys, \%dest);
473
474The C<*_by_key> variants all work in exactly the same way as the corresponding
475plain function, except that libmemcached hashes $master_key instead of $key to
476which memcached server to communicate with.
477
478If $master_key is undef then the functions behave the same as their non-by-key
479variants, i.e., $key is used for hashing.
480
481By-key variants of L</Functions for Fetching Values>:
482
483=head3 memcached_get_by_key
484
485=head3 memcached_mget_by_key
486
487By-key variants of L</Functions for Setting Values>:
488
489=head3 memcached_set_by_key
490
491=head3 memcached_replace_by_key
492
493=head3 memcached_add_by_key
494
495=head3 memcached_append_by_key
496
497=head3 memcached_cas_by_key
498
499=head3 memcached_prepend_by_key
500
501=head3 memcached_delete_by_key
502
503=head1 OBJECT-ORIENTED INTERFACE
504
505=head2 Methods
506
507=head3 new
508
509 $memc = $class->new; # same as memcached_create()
510
511=head3 errstr
512
513 $errstr = $memc->errstr;
514
515Returns the error message and code from the most recent call to any
516libmemcached function that returns a C<memcached_return>, which most do.
517
518The return value is a I<dualvar>, like $!, which means it has separate numeric
519and string values. The numeric value is the memcached_return integer value,
520and the string value is the corresponding error message what memcached_strerror()
521would return.
522
523As a special case, if the memcached_return is MEMCACHED_ERRNO, indicating a
524system call error, then the string returned by strerror() is appended.
525
526This method is also currently callable as memcached_errstr() for compatibility
527with an earlier version, but that deprecated alias will start warning and then
528cease to exist in future versions.
529
530=head3 mget_into_hashref
531
532 $memc->mget_into_hashref( \@keys, \%dest_hash); # keys from array
533 $memc->mget_into_hashref( \%keys, \%dest_hash); # keys from hash
534
535Combines memcached_mget() and a memcached_fetch() loop into a single highly
536efficient call.
537
538Fetched values are stored in \%dest_hash, updating existing values or adding
539new ones as appropriate.
540
541This method is also currently callable as memcached_mget_into_hashref() for
542compatibility with an earlier version, but that deprecated alias will start
543warning and then cease to exist in future versions.
544
545=head3 get_multi
546
547 $hash_ref = $memc->get_multi( @keys );
548
549Effectively the same as:
550
551 $memc->mget_into_hashref( \@keys, $hash_ref = { } )
552
553So it's very similar to L</mget_into_hashref> but less efficient for large
554numbers of keys (because the keys have to be pushed onto the argument stack)
555and less flexible (because you can't add/update elements into an existing hash).
556
557This method is provided to optimize subclasses that want to provide a
558Cache::Memcached compatible API with maximum efficiency.
559Note, however, that C<get_multi> does I<not> support the L<Cache::Memcached>
560feature where a key can be a reference to an array [ $master_key, $key ].
561Use L</memcached_mget_by_key> directly if you need that feature.
562
563=head3 get
564
565 $value = $memc->get( $key );
566
567Effectively the same as:
568
569 $value = memcached_get( $memc, $key );
570
571The C<get> method also supports the L<Cache::Memcached> feature where $key can
572be a reference to an array [ $master_key, $key ]. In which case the call is
573effectively the same as:
574
575 $value = memcached_get_by_key( $memc, $key->[0], $key->[1] )
576
577
578=head3 set_callback_coderefs
579
580 $memc->set_callback_coderefs(\&set_callback, \&get_callback);
581
582This interface is I<experimental> and I<likely to change>. (It's also currently
583used by Cache::Memcached::libmemcached, so don't use it if you're using that module.)
584
585Specify functions which will be executed when values are set and/or get using $memc.
586
587When the callbacks are executed $_ is the value and the arguments are the key
588and flags value. Both $_ and the flags may be modified.
589
590Currently the functions must return an empty list.
591
592This method is also currently callable as memcached_set_callback_coderefs() for
593compatibility with an earlier version, but that deprecated alias will start
594warning and then cease to exist in future versions.
595
596=head3 walk_stats
597
598 $memc->walk_stats( $stats_args, \&my_stats_callback );
599
600This interface is I<experimental> and I<likely to change>.
601
602Calls the memcached_stat() function to issue a "STAT $stats_args" command to
603the connected memcached servers. The $stats_args argument is usually an empty string.
604
605The callback function is called for each return value from each server.
606The callback will be passed 4 parameters:
607
608 sub my_stats_callback {
609 my ($key, $value, $hostport, $stats_args) = @_;
610 # Do what you like with the above!
611 return;
612 }
613
614Currently the callback I<must> return an empty list.
615
616=head1 EXTRA INFORMATION
617
618=head2 Tracing Execution
619
620The C<PERL_LIBMEMCACHED_TRACE> environment variable can be used to control
621tracing. The value is read when L<memcached_create> is called.
622
623If set >= 1 then any non-success memcached_return value will be logged via warn().
624
625If set >= 2 or more then some data types will list conversions of input and output values for function calls.
626
627More flexible mechanisms will be added later.
628
629=head2 Type Mapping
630
631For pointer arguments, undef is mapped to null on input and null is mapped to
632undef on output.
633
634XXX expand with details from typemap file
635
636=head2 Deprecated Functions
637
638The following functions are available but deprecated in this release.
639In the next release they'll generate warnings.
640In a future release they'll be removed.
641
642=head3 memcached_errstr
643
644Use L</errstr> instead.
645
646=head3 memcached_mget_into_hashref
647
648Use L</mget_into_hashref> instead.
649
650=head3 memcached_set_callback_coderefs
651
652Use L</set_callback_coderefs> instead.
653
654=head1 AUTHOR EMERITUS
655
656Tim Bunce, C<< <Tim.Bunce@pobox.com> >> with help from Patrick Galbraith and Daisuke Maki.
657
658L<http://www.tim.bunce.name>
659
660=head1 CURRENT MAINTAINER
661
662Daisuke Maki C<< <daisuke@endeworks.jp> >>
663
664=head1 ACKNOWLEDGEMENTS
665
666Larry Wall for Perl, Brad Fitzpatrick for memcached, Brian Aker for libmemcached,
667and Patrick Galbraith and Daisuke Maki for helping with the implementation.
668
669=head1 PORTABILITY
670
671See Slaven Rezic's excellent CPAN Testers Matrix at L<http://bbbike.radzeit.de/~slaven/cpantestersmatrix.cgi?dist=Memcached-libmemcached>
672
673Along with Dave Cantrell's excellent CPAN Dependency tracker at
674L<http://cpandeps.cantrell.org.uk/?module=Memcached%3A%3Alibmemcached&perl=any+version&os=any+OS>
675
676=head1 BUGS
677
678Please report any bugs or feature requests to
679C<bug-memcached-libmemcached@rt.cpan.org>, or through the web interface at
680L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Memcached-libmemcached>.
681I will be notified, and then you'll automatically be notified of progress on
682your bug as I make changes.
683
684=head1 CONTRIBUTING
685
686The source is hosted at L<http://perl-libmemcached.googlecode.com/>
687Patches and volunteers always welcome.
688
689=head1 COPYRIGHT & LICENSE
690
691Copyright 2008 Tim Bunce, All Rights Reserved.
692
693This program is free software; you can redistribute it and/or modify it
694under the same terms as Perl itself.
695
696=cut
697
698111µs1; # End of Memcached::libmemcached
# spent 474µs within Memcached::libmemcached::DESTROY which was called # once (474µs+0s) by main::NULL at line 0 of 05.Domain_and_Item.t
sub Memcached::libmemcached::DESTROY; # xsub
# spent 206µs within Memcached::libmemcached::errstr which was called 58 times, avg 4µs/call: # 29 times (97µs+0s) by SimpleDB::Class::Cache::get at line 259 of ../lib/SimpleDB/Class/Cache.pm, avg 3µs/call # 17 times (76µs+0s) by SimpleDB::Class::Cache::set at line 385 of ../lib/SimpleDB/Class/Cache.pm, avg 4µs/call # 12 times (34µs+0s) by SimpleDB::Class::Cache::flush at line 208 of ../lib/SimpleDB/Class/Cache.pm, avg 3µs/call
sub Memcached::libmemcached::errstr; # xsub
# spent 57µs within Memcached::libmemcached::memcached_create which was called # once (57µs+0s) by SimpleDB::Class::Cache::__ANON__[../lib/SimpleDB/Class/Cache.pm:106] at line 96 of ../lib/SimpleDB/Class/Cache.pm
sub Memcached::libmemcached::memcached_create; # xsub
# spent 1.63ms within Memcached::libmemcached::memcached_flush which was called 3 times, avg 542µs/call: # 3 times (1.63ms+0s) by SimpleDB::Class::Cache::flush at line 207 of ../lib/SimpleDB/Class/Cache.pm, avg 542µs/call
sub Memcached::libmemcached::memcached_flush; # xsub
# spent 5.18ms within Memcached::libmemcached::memcached_get which was called 24 times, avg 216µs/call: # 24 times (5.18ms+0s) by SimpleDB::Class::Cache::get at line 257 of ../lib/SimpleDB/Class/Cache.pm, avg 216µs/call
sub Memcached::libmemcached::memcached_get; # xsub
# spent 24µs within Memcached::libmemcached::memcached_server_add which was called # once (24µs+0s) by SimpleDB::Class::Cache::__ANON__[../lib/SimpleDB/Class/Cache.pm:106] at line 102 of ../lib/SimpleDB/Class/Cache.pm
sub Memcached::libmemcached::memcached_server_add; # xsub
# spent 4.16ms within Memcached::libmemcached::memcached_set which was called 17 times, avg 245µs/call: # 17 times (4.16ms+0s) by SimpleDB::Class::Cache::set at line 384 of ../lib/SimpleDB/Class/Cache.pm, avg 245µs/call
sub Memcached::libmemcached::memcached_set; # xsub