由於專案主管提出統計每個方法執行的具體時間,列印到日誌以後方便分析問題。這個也是很常用的辦法,但是我們呼叫的外部模組非常多,每個地方都加上乙個時間統計就顯得非常難看了。所以這個事情當然還是交給spring的aop功能**掉,就算那天不想統計時間了,清除這個功能也異常容易。下面給出乙個小例子,非常的簡單。
首先,給出乙個mouse的物件,他有幾個基本的動作,我們就統計這些動作的具體執行時間。
package
log;
public
class
mouse
public
void
move() catch
(interruptedexception e)
} }
然後編寫乙個對於時間統計的類作為aspect。
package
log;
import
org.apache.log4j.logger;
import
org.aspectj.lang.proceedingjoinpoint;
public
class
logaspect finally
return
result;
}
}
最關鍵的就是在配置檔案宣告橫切面和具體執行類,注意這個bean必須在spring容器裡面才行。
<?
xmlversion
="1.0"
encoding
="utf-8"
?>
<
beans
xmlns
=""xmlns:xsi
=""xmlns:aop
=""xsi:schemalocation
="
/spring-beans-2.5.xsd
/spring-aop-2.5.xsd">
<
beanid=
"logaspect"
class
="log.logaspect"
/>
<
beanid=
"mouse"
class
="log.mouse"
/>
<
aop:config
>
<
aop:pointcutid=
"logpointcut"
expression
="execution( * log.mouse.*(..))"
/>
<
aop:aspect
ref=
"logaspect"
>
<
aop:around
pointcut-ref
="logpointcut"
method
="invoke"
/>
aop:aspect
>
aop:config
>
beans
>
最後給出執行的測試類
package
log;
import
import
public
class
logtest
} 這裡再提下asm,這個橫切進入的實現就是依靠asm的動態生成中間位元組碼,在生成位元組碼的動作中把具體的實現混入進去了。不得不讚嘆一下~!
C 控制方法執行時間
1.最近在專案中有個讀取檔案的方法,如果檔案過大,這個方法會長時間卡住,影響程式的執行。於是研究了一下控制方法的執行時間,如果超過某個時間,則跳出該方法的執行。demo 1 private static void main string args 2,函式執行時間 s ret,datetime.no...
測試程式執行時間的方法
程式的效能好壞是由其執行時間和空間占用情況決定的,而執行時間是主要的指標。因此設計出新的演算法時,根據時間複雜度確定新的演算法和傳統演算法的優劣,此時需要在程式中新增 段,測試程式執行時間。這裡介紹兩種測試程式執行時間的方法。法1 include include include int main e...
java如何記錄方法執行時間?
當我們寫完一些東西的時候,執行有可能很慢卻不知道 出現了問題,這時候我們就需要在 中新增適當的測試 以便於我們找到原因並解決!這個 是測試 嗎,不需要匯入包。在你需要測試的 方法第一行加上 long a system.currenttimemillis 在最後的一行加上 system.out.pri...