Changes

Jump to navigation Jump to search
1,906 bytes added ,  06:53, 29 November 2019
no edit summary
==prof:track==
 
{{Mark|Introduced with Version 9.0:}}
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|prof:track|$expr expression as item()|item()*}}<br/>{{Func|prof:track|$expr expression as item(), $options as map(*)?|item()*}}
|-
| '''Summary'''
|Measures the execution time and memory consumption required for evaluating the specified {{Code|$expression}} and returns a map with the results. The following {{Code|$options}} are available:
* {{Code|memorytime}}: Enables Include execution time profiling in result as {{Code|xs:decimal}} (unit: milliseconds; default: true).* {{Code|timememory}}: Enables Include memory profiling consumption in result as {{Code|xs:integer}} (unit: bytes; default: truefalse).* {{Code|value}}: Returns the Include value in result (default: true).
Helpful notes:
* If you are not interested in some of the returned results, you should disable them to save time and memory.
* Profiling might change the execution behavior of your code: An expression that might be executed iteratively will be cached by the profiling function.
* If a value has a compact internal representation, memory consumption will be very low, even if the serialized result may consume much more memory.
* In Java, Please note that memory profiling can is only be approximative: To improve the measurement, and if so it can be quite misleading. If the memory option is enabled, main-memory will be garbage-collected before and after evaluation. If you are not interested in to improve the quality of the memory consumption, it is advisable to disable this optionmeasurement.
|-
| '''Properties'''
|-
| '''Examples'''
|* Return a human-readable representation of the memory consumption caused by fetching an XML document (<code>fetch:xml</code> is used, as <code>fn:doc</code> may already be evaluated at compilation time):<pre class="brush:xquery">prof:track(fetch:xml('factbook.xml'))?memory=> prof:human()</pre>* The function call <code>prof:track((1 to 1000000)[. mod 2 = 0], map { 'time': false() })</code> will return something similar to:
<pre class="brush:xquery">
map {
"memory": 41548400, "time": 34.9921548400,
"value": (2, 4, 6, 8, 10, ...)
}
==prof:time==
 
{{Mark|Updated with Version 9.0:}} {{Code|$cache}} argument removed.
{| width='100%'
|-
| '''Summary'''
|Measures the time needed to evaluate {{Code|$expr}} and outputs a string to standard error or, if the GUI is used, to the Info View. An optional {{Code|$label}} may be specified to tag the profiling result. See {{Function|Profiling|#prof:track}} for further notes.
|-
| '''Properties'''
==prof:memory==
 
{{Mark|Updated with Version 9.0:}} Renamed (old name: <code>prof:mem</code>); {{Code|$cache}} argument removed.
{| width='100%'
|-
| '''Summary'''
|Measures the memory allocated by evaluating {{Code|$expr}} and outputs a string to standard error or, if the GUI is used, to the Info View. An optional {{Code|$label}} may be specified to tag the profiling result. See {{Function|Profiling|#prof:track}} for further notes.
|-
| '''Properties'''
|-
| width='120' | '''Signatures'''
|{{Func|prof:dump|$expr as item()*|empty-sequence()}}<br />{{Func|prof:dump|$expr as item()*, $label as xs:string|empty-sequence()}}<br />
|-
| '''Summary'''
|-
| '''Summary'''
|Prints a list of all current local and global variable assignments to standard error or, if the GUI is used, to the Info View.<br />As every query is optimized before being evaluated, not all of the original variables may be visible in the output. Moreover, many variables of function calls will disappear because functions are inlined. Function inlining can be turned off by setting the [[Options#INLINELIMIT{{Option|INLINELIMIT]] option }} to <code>0</code>.
|-
| '''Properties'''
| '''Examples'''
|
* {{Code|for $x in 1 to 2 return ($x, prof:variables())}} will dump the values of <code>$x</code> to standard error.
|}
| '''Summary'''
|Similar to {{Code|fn:trace($expr, $msg)}}, but instead of a user-defined message, it emits the compile-time type and estimated result size of its argument.
|}
 
==prof:gc==
 
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|prof:gc||empty-sequence()}}<br/>{{Func|prof:gc|$count as xs:integer|empty-sequence()}}
|-
| '''Summary'''
|Enforces Java garbage collection. If no {{Code|$count}} is supplied, garbage will be collected once. Please note that this function should only be used for debugging purposes; in productive code, it is best to trust the garbage collecting strategies of Java.
|}
 
==prof:runtime==
 
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|prof:runtime|$name of xs:string|xs:integer}}
|-
| '''Summary'''
|Returns the value of the specified runtime {{Code|$option}}. The following options exist:
* {{Code|max}}: Maximum memory that the Java virtual machine will attempt to use.
* {{Code|total}}: Total memory in the Java virtual machine (varies over time).
* {{Code|used}}: Currently used memory (varies over time, will shrink after garbage collection).
* {{Code|processors}}: number of processors available to the Java virtual machine.
|-
|{{Code|option}}
|The specified option is unknown.
|-
| '''Examples'''
|
* <code>prof:gc(3), prof:human(prof:runtime('used'))</code> performs some garbage collection and returns the currently used amount of memory in a user-friendly format.
|}
|
* {{Code|prof:human(16384)}} returns {{Code|16K}}.
|}
 
=Errors=
 
{| class="wikitable" width="100%"
! width="110"|Code
|Description
|-
|{{Code|option}}
|The specified option is unknown.
|}
=Changelog=
 
;Version 9.2
 
* Added: [[#prof:gc|prof:gc]], [[#prof:runtime|prof:runtime]]
* Updated: [[#prof:track|prof:track]]: decimal timing results; by default no memory profiling
;Version 9.0
* Added: [[#prof:track|prof:track]]
* Updated: renamed prof:mem to [[#prof:memory|prof:memory]], [[#prof:time|prof:time]]: <code>$cache</code> argument removed
;Version 8.5
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu