Game-Collisions

 view release on metacpan or  search on metacpan

nytprof/AABB-pm-15-line.html  view on Meta::CPAN

<tr><td class="h"><a name="124"></a>124</td><td class="c3">999</td><td class="c3"><span title="Avg 157ns">157µs</span></td><td></td><td></td><td class="s">    while( @nodes_to_check ) {</td></tr>
<tr><td class="h"><a name="125"></a>125</td><td class="c3">9478</td><td class="c3"><span title="Avg 118ns">1.12ms</span></td><td></td><td></td><td class="s">        my $check_node = shift @nodes_to_check;</td></tr>
<tr><td class="h"><a name="126"></a>126</td><td class="c3">9478</td><td class="c3"><span title="Avg 153ns">1.45ms</span></td><td></td><td></td><td class="s">        my $left_node = $check_node-&gt;[_LEFT_NODE];</td></tr>
<tr><td class="h"><a name="127"></a>127</td><td class="c3">9478</td><td class="c3"><span title="Avg 131ns">1.24ms</span></td><td></td><td></td><td class="s">        my $right_node = $check_node-&gt;[_RIGHT_NODE];</td></tr>
<tr><td class="h"><a name="128"></a>128</td><td class="c3">9478</td><td class="c2"><span title="Avg 219ns">2.08ms</span></td><td></td><td></td><td class="s">        return $check_node</td></tr>
<tr><td class="h"><a name="129"></a>129</td><td></td><td></td><td></td><td></td><td class="s">            if (! defined $left_node) || (! defined $right_node);</td></tr>
<tr><td class="h"><a name="130"></a>130</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="131"></a>131</td><td class="c3">8479</td><td class="c0"><span title="Avg 584ns">4.95ms</span></td><td class="c0">8479</td><td class="c0">207ms</td><td class="s">        my (undef, undef, $left_length, $left_height)<div clas...
<tr><td class="h"><a name="132"></a>132</td><td></td><td></td><td></td><td></td><td class="s">            = $self-&gt;_calculate_bounding_box_for_nodes( $left_node, $new_node );</td></tr>
<tr><td class="h"><a name="133"></a>133</td><td class="c3">8479</td><td class="c0"><span title="Avg 549ns">4.65ms</span></td><td class="c0">8479</td><td class="c0">218ms</td><td class="s">        my (undef, undef, $right_length, $right_height)<div cl...
<tr><td class="h"><a name="134"></a>134</td><td></td><td></td><td></td><td></td><td class="s">            = $self-&gt;_calculate_bounding_box_for_nodes( $right_node, $new_node);</td></tr>
<tr><td class="h"><a name="135"></a>135</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="136"></a>136</td><td class="c3">8479</td><td class="c3"><span title="Avg 116ns">980µs</span></td><td></td><td></td><td class="s">        my $left_surface = $left_length * $left_height;</td></tr>
<tr><td class="h"><a name="137"></a>137</td><td class="c3">8479</td><td class="c3"><span title="Avg 88ns">750µs</span></td><td></td><td></td><td class="s">        my $right_surface = $right_length * $right_height;</td></tr>
<tr><td class="h"><a name="138"></a>138</td><td class="c3">8479</td><td class="c0"><span title="Avg 489ns">4.14ms</span></td><td></td><td></td><td class="s">        push @nodes_to_check,</td></tr>
<tr><td class="h"><a name="139"></a>139</td><td></td><td></td><td></td><td></td><td class="s">            ($left_surface &gt; $right_surface) ? $right_node : $left_node;</td></tr>
<tr><td class="h"><a name="140"></a>140</td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
<tr><td class="h"><a name="141"></a>141</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="142"></a>142</td><td></td><td></td><td></td><td></td><td class="s">    # How did we get here? It should have descended the tree until it </td></tr>
<tr><td class="h"><a name="143"></a>143</td><td></td><td></td><td></td><td></td><td class="s">    # came to the leaf and returned that. Just in case, return ourselves.</td></tr>
<tr><td class="h"><a name="144"></a>144</td><td></td><td></td><td></td><td></td><td class="s">    return $self;</td></tr>
<tr><td class="h"><a name="145"></a>145</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="146"></a>146</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="147"></a>147</td><td></td><td></td><td></td><td></td><td class="s">sub is_branch_node</td></tr>
<tr><td class="h"><a name="148"></a>148</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 105ms within Game::Collisions::AABB::is_branch_node which was called 194280 times, avg 539ns/call:
# 194280 times (105ms+0s) by Game::Collisions::get_collisions_for_aabb at <a href="Collisions-pm-12-line.html#80">line 80 of /home/tmurray/proj/Game-Collisions/lib/Game/Collisions.pm</a>, avg 539ns/call</div></div>{</td></tr>
<tr><td class="h"><a name="149"></a>149</td><td class="c0">194280</td><td class="c0"><span title="Avg 110ns">21.3ms</span></td><td></td><td></td><td class="s">    my ($self) = @_;</td></tr>
<tr><td class="h"><a name="150"></a>150</td><td class="c0">194280</td><td class="c0"><span title="Avg 2µs">337ms</span></td><td></td><td></td><td class="s">    return (defined $self-&gt;[_LEFT_NODE]) || (defined $self-&gt;[_RIGHT_NODE]);</td></tr>
<tr><td class="h"><a name="151"></a>151</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="152"></a>152</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="153"></a>153</td><td></td><td></td><td></td><td></td><td class="s">sub dump_tree</td></tr>
<tr><td class="h"><a name="154"></a>154</td><td></td><td></td><td></td><td></td><td class="s">{</td></tr>
<tr><td class="h"><a name="155"></a>155</td><td></td><td></td><td></td><td></td><td class="s">    my ($self, $spacing) = @_;</td></tr>
<tr><td class="h"><a name="156"></a>156</td><td></td><td></td><td></td><td></td><td class="s">    $spacing //= '';</td></tr>
<tr><td class="h"><a name="157"></a>157</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="158"></a>158</td><td></td><td></td><td></td><td></td><td class="s">    my $draw_chars = $self-&gt;is_branch_node</td></tr>
<tr><td class="h"><a name="159"></a>159</td><td></td><td></td><td></td><td></td><td class="s">        ? '├┐'</td></tr>
<tr><td class="h"><a name="160"></a>160</td><td></td><td></td><td></td><td></td><td class="s">        : '│├';</td></tr>
<tr><td class="h"><a name="161"></a>161</td><td></td><td></td><td></td><td></td><td class="s">    my $str = &quot;$spacing├┤ &quot; . join( ', ',</td></tr>
<tr><td class="h"><a name="162"></a>162</td><td></td><td></td><td></td><td></td><td class="s">        &quot;$self&quot;,</td></tr>
<tr><td class="h"><a name="163"></a>163</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;x,</td></tr>
<tr><td class="h"><a name="164"></a>164</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;y,</td></tr>
<tr><td class="h"><a name="165"></a>165</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;length,</td></tr>
<tr><td class="h"><a name="166"></a>166</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;height,</td></tr>
<tr><td class="h"><a name="167"></a>167</td><td></td><td></td><td></td><td></td><td class="s">    );</td></tr>
<tr><td class="h"><a name="168"></a>168</td><td></td><td></td><td></td><td></td><td class="s">    $str .= &quot;\n&quot;;</td></tr>
<tr><td class="h"><a name="169"></a>169</td><td></td><td></td><td></td><td></td><td class="s">    $str .= $self-&gt;left_node-&gt;dump_tree( $spacing . '┼' )</td></tr>
<tr><td class="h"><a name="170"></a>170</td><td></td><td></td><td></td><td></td><td class="s">        if defined $self-&gt;left_node;</td></tr>
<tr><td class="h"><a name="171"></a>171</td><td></td><td></td><td></td><td></td><td class="s">    $str .= $self-&gt;right_node-&gt;dump_tree( $spacing . '┼' )</td></tr>
<tr><td class="h"><a name="172"></a>172</td><td></td><td></td><td></td><td></td><td class="s">        if defined $self-&gt;right_node;</td></tr>
<tr><td class="h"><a name="173"></a>173</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="174"></a>174</td><td></td><td></td><td></td><td></td><td class="s">    return $str;</td></tr>
<tr><td class="h"><a name="175"></a>175</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="176"></a>176</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="177"></a>177</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="178"></a>178</td><td></td><td></td><td></td><td></td><td class="s">sub _set_node</td></tr>
<tr><td class="h"><a name="179"></a>179</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 12.9ms (9.76+3.17) within Game::Collisions::AABB::_set_node which was called 2996 times, avg 4µs/call:
# 1541 times (6.14ms+1.74ms) by Game::Collisions::AABB::set_left_node at <a href="AABB-pm-15-line.html#74">line 74</a>, avg 5µs/call
# 1455 times (3.62ms+1.42ms) by Game::Collisions::AABB::set_right_node at <a href="AABB-pm-15-line.html#80">line 80</a>, avg 3µs/call</div></div>{</td></tr>
<tr><td class="h"><a name="180"></a>180</td><td class="c3">2996</td><td class="c3"><span title="Avg 148ns">445µs</span></td><td></td><td></td><td class="s">    my ($self, $node, $index) = @_;</td></tr>
<tr><td class="h"><a name="181"></a>181</td><td class="c3">2996</td><td class="c3"><span title="Avg 485ns">1.45ms</span></td><td class="c3">998</td><td class="c3">246µs</td><td class="s">    Scalar::Util::unweaken( $self-&gt;[$index] )<div class="ca...
<tr><td class="h"><a name="182"></a>182</td><td></td><td></td><td></td><td></td><td class="s">        if defined $self-&gt;[$index];</td></tr>
<tr><td class="h"><a name="183"></a>183</td><td class="c3">2996</td><td class="c3"><span title="Avg 127ns">380µs</span></td><td></td><td></td><td class="s">    $self-&gt;[$index] = $node;</td></tr>
<tr><td class="h"><a name="184"></a>184</td><td class="c3">2996</td><td class="c0"><span title="Avg 2µs">4.91ms</span></td><td class="c0">2996</td><td class="c3">847µs</td><td class="s">    Scalar::Util::weaken( $self-&gt;[$index] );<div class="cal...
<tr><td class="h"><a name="185"></a>185</td><td class="c3">2996</td><td class="c3"><span title="Avg 450ns">1.35ms</span></td><td class="c0">2996</td><td class="c1">2.07ms</td><td class="s">    my $former_parent = $node-&gt;set_parent( $self );<div cl...
<tr><td class="h"><a name="186"></a>186</td><td class="c3">2996</td><td class="c0"><span title="Avg 2µs">6.10ms</span></td><td></td><td></td><td class="s">    return $former_parent;</td></tr>
<tr><td class="h"><a name="187"></a>187</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="188"></a>188</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="189"></a>189</td><td></td><td></td><td></td><td></td><td class="s">sub _resize_to_fit_children</td></tr>
<tr><td class="h"><a name="190"></a>190</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 260ms (27.1+233) within Game::Collisions::AABB::_resize_to_fit_children which was called 9478 times, avg 27...
# 9478 times (27.1ms+233ms) by Game::Collisions::AABB::resize_all_parents at <a href="AABB-pm-15-line.html#100">line 100</a>, avg 27µs/call</div></div>{</td></tr>
<tr><td class="h"><a name="191"></a>191</td><td class="c3">9478</td><td class="c3"><span title="Avg 115ns">1.09ms</span></td><td></td><td></td><td class="s">    my ($self) = @_;</td></tr>
<tr><td class="h"><a name="192"></a>192</td><td class="c3">9478</td><td class="c0"><span title="Avg 629ns">5.96ms</span></td><td class="c0">9478</td><td class="c0">233ms</td><td class="s">    my ($x, $y, $length, $height) = $self-&gt;_calculate_bound...
<tr><td class="h"><a name="193"></a>193</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;[_LEFT_NODE],</td></tr>
<tr><td class="h"><a name="194"></a>194</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;[_RIGHT_NODE],</td></tr>
<tr><td class="h"><a name="195"></a>195</td><td></td><td></td><td></td><td></td><td class="s">    );</td></tr>
<tr><td class="h"><a name="196"></a>196</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="197"></a>197</td><td class="c3">9478</td><td class="c3"><span title="Avg 123ns">1.17ms</span></td><td></td><td></td><td class="s">    $self-&gt;[_X] = $x;</td></tr>
<tr><td class="h"><a name="198"></a>198</td><td class="c3">9478</td><td class="c3"><span title="Avg 102ns">971µs</span></td><td></td><td></td><td class="s">    $self-&gt;[_Y] = $y;</td></tr>
<tr><td class="h"><a name="199"></a>199</td><td class="c3">9478</td><td class="c3"><span title="Avg 98ns">933µs</span></td><td></td><td></td><td class="s">    $self-&gt;[_LENGTH] = $length;</td></tr>
<tr><td class="h"><a name="200"></a>200</td><td class="c3">9478</td><td class="c3"><span title="Avg 93ns">883µs</span></td><td></td><td></td><td class="s">    $self-&gt;[_HEIGHT] = $height;</td></tr>
<tr><td class="h"><a name="201"></a>201</td><td class="c3">9478</td><td class="c3"><span title="Avg 123ns">1.16ms</span></td><td></td><td></td><td class="s">    $self-&gt;[_MAX_X] = $x + $length;</td></tr>
<tr><td class="h"><a name="202"></a>202</td><td class="c3">9478</td><td class="c3"><span title="Avg 100ns">946µs</span></td><td></td><td></td><td class="s">    $self-&gt;[_MAX_Y] = $y + $height;</td></tr>
<tr><td class="h"><a name="203"></a>203</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="204"></a>204</td><td class="c3">9478</td><td class="c0"><span title="Avg 2µs">20.1ms</span></td><td></td><td></td><td class="s">    return;</td></tr>
<tr><td class="h"><a name="205"></a>205</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="206"></a>206</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="207"></a>207</td><td></td><td></td><td></td><td></td><td class="s">sub _calculate_bounding_box_for_nodes</td></tr>
<tr><td class="h"><a name="208"></a>208</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 659ms (566+92.1) within Game::Collisions::AABB::_calculate_bounding_box_for_nodes which was called 26436 ti...
# 9478 times (201ms+32.6ms) by Game::Collisions::AABB::_resize_to_fit_children at <a href="AABB-pm-15-line.html#192">line 192</a>, avg 25µs/call
# 8479 times (188ms+29.4ms) by Game::Collisions::AABB::find_best_sibling_node at <a href="AABB-pm-15-line.html#133">line 133</a>, avg 26µs/call
# 8479 times (177ms+30.1ms) by Game::Collisions::AABB::find_best_sibling_node at <a href="AABB-pm-15-line.html#131">line 131</a>, avg 24µs/call</div></div>{</td></tr>
<tr><td class="h"><a name="209"></a>209</td><td class="c0">26436</td><td class="c1"><span title="Avg 124ns">3.28ms</span></td><td></td><td></td><td class="s">    my ($self, $node1, $node2) = @_;</td></tr>
<tr><td class="h"><a name="210"></a>210</td><td class="c0">26436</td><td class="c0"><span title="Avg 2µs">61.6ms</span></td><td class="c0">79308</td><td class="c0">18.1ms</td><td class="s">    my $min_x = List::Util::min( $node1-&gt;x, $node2-&gt;x ...
    # spent  4.21ms making 26436 calls to <a href="List-Util-pm-13-line.html#List__Util__min">List::Util::min</a>, avg 159ns/call</div></div></td></tr>
<tr><td class="h"><a name="211"></a>211</td><td class="c0">26436</td><td class="c0"><span title="Avg 2µs">58.2ms</span></td><td class="c0">79308</td><td class="c0">15.2ms</td><td class="s">    my $min_y = List::Util::min( $node1-&gt;y, $node2-&gt;y ...
    # spent  2.94ms making 26436 calls to <a href="List-Util-pm-13-line.html#List__Util__min">List::Util::min</a>, avg 111ns/call</div></div></td></tr>
<tr><td class="h"><a name="212"></a>212</td><td class="c0">26436</td><td class="c0"><span title="Avg 3µs">72.9ms</span></td><td class="c0">132180</td><td class="c0">29.7ms</td><td class="s">    my $max_x = List::Util::max(<div class="calls"><div cla...
    # spent  12.1ms making 52872 calls to <a href="AABB-pm-15-line.html#64">Game::Collisions::AABB::length</a>, avg 229ns/call
    # spent  5.48ms making 26436 calls to <a href="List-Util-pm-13-line.html#List__Util__max">List::Util::max</a>, avg 207ns/call</div></div></td></tr>
<tr><td class="h"><a name="213"></a>213</td><td></td><td></td><td></td><td></td><td class="s">        $node1-&gt;length + $node1-&gt;x,</td></tr>
<tr><td class="h"><a name="214"></a>214</td><td></td><td></td><td></td><td></td><td class="s">        $node2-&gt;length + $node2-&gt;x,</td></tr>
<tr><td class="h"><a name="215"></a>215</td><td></td><td></td><td></td><td></td><td class="s">    );</td></tr>
<tr><td class="h"><a name="216"></a>216</td><td class="c0">26436</td><td class="c0"><span title="Avg 2µs">66.0ms</span></td><td class="c0">132180</td><td class="c0">29.0ms</td><td class="s">    my $max_y = List::Util::max(<div class="calls"><div cla...
    # spent  11.6ms making 52872 calls to <a href="AABB-pm-15-line.html#65">Game::Collisions::AABB::height</a>, avg 220ns/call
    # spent  5.38ms making 26436 calls to <a href="List-Util-pm-13-line.html#List__Util__max">List::Util::max</a>, avg 203ns/call</div></div></td></tr>
<tr><td class="h"><a name="217"></a>217</td><td></td><td></td><td></td><td></td><td class="s">        $node1-&gt;height + $node1-&gt;y,</td></tr>
<tr><td class="h"><a name="218"></a>218</td><td></td><td></td><td></td><td></td><td class="s">        $node2-&gt;height + $node2-&gt;y,</td></tr>
<tr><td class="h"><a name="219"></a>219</td><td></td><td></td><td></td><td></td><td class="s">    );</td></tr>
<tr><td class="h"><a name="220"></a>220</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="221"></a>221</td><td class="c0">26436</td><td class="c1"><span title="Avg 101ns">2.66ms</span></td><td></td><td></td><td class="s">    my $length = $max_x - $min_x;</td></tr>
<tr><td class="h"><a name="222"></a>222</td><td class="c0">26436</td><td class="c2"><span title="Avg 89ns">2.35ms</span></td><td></td><td></td><td class="s">    my $height = $max_y - $min_y;</td></tr>
<tr><td class="h"><a name="223"></a>223</td><td class="c0">26436</td><td class="c0"><span title="Avg 2µs">51.5ms</span></td><td></td><td></td><td class="s">    return ($min_x, $min_y, $length, $height);</td></tr>
<tr><td class="h"><a name="224"></a>224</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="225"></a>225</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="226"></a>226</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="227"></a>227</td><td class="c3">1</td><td class="c3"><span title="Avg 3µs">3µs</span></td><td></td><td></td><td class="s">1;</td></tr>
<tr><td class="h"><a name="228"></a>228</td><td></td><td></td><td></td><td></td><td class="s">__END__</td></tr>
</tbody></table></div>
        
            <script type="text/javascript">
              $(document).ready(function() { 

        $("#subs_table").tablesorter({



( run in 0.813 second using v1.01-cache-2.11-cpan-302cb4679cc )