java異步刷新集合,同步和異步集合的性能測試,異步集合性能測試,package cn.o

同步和異步集合的性能測試,異步集合性能測試,package cn.opackage cn.outofmemory.snippets.core;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Vector;import java.util.concurrent.TimeUnit;public class CollectionExample { static int loops; public static void main(String[] args) { loops = 10; performTest(new Vector()); performTest(new ArrayList()); performTest(Collections.synchronizedList(new ArrayList())); System.out.println("Synchronized Vector test"); cleanGCollect(); Timestamp timSTM = new Timestamp(); performTest(new Vector()); timSTM.stop(); System.out.println("Test took " + timSTM); System.out.println("Unsynchronized vector test"); cleanGCollect(); Timestamp timeSTMUnsync = new Timestamp(); timeSTMUnsync.stop(); System.out.println("Test took " + timeSTMUnsync); double gained = ((double) (timSTM.elapsedTime() - timeSTMUnsync.elapsedTime())) / loops; System.out.println("Unsynchronized operation saves " + gained + " " + timSTM.units() + " per call"); System.out.println("Synchronized arraylist test"); cleanGCollect(); timSTM = new Timestamp(); performTest(Collections.synchronizedList(new ArrayList())); timSTM.stop(); System.out.println("Test took " + timSTM); System.out.println("Unsynchronized arraylist test"); cleanGCollect(); timeSTMUnsync = new Timestamp(); performTest(new ArrayList()); timeSTMUnsync.stop(); System.out.println("Test took " + timeSTMUnsync); gained = ((double) (timSTM.elapsedTime() - timeSTMUnsync.elapsedTime())) / loops; System.out.println("Unsynchronized operation saves " + gained + " " + timSTM.units() + " per call"); } static void cleanGCollect() { System.gc(); System.runFinalization(); System.gc(); } static void performTest(List l) { Integer integer = new Integer(0); for (int i = 0; i < loops; i++) { l.add(integer); } }}class Timestamp { private long start; private long stop; private boolean stopped = false; private TimeUnit timeUnit; public Timestamp() { this(TimeUnit.NANOSECONDS); } public Timestamp(TimeUnit units) { this.timeUnit = units; start(); } public void start() { start = System.nanoTime(); stopped = false; } public void stop() { stop = System.nanoTime(); stopped = true; } public long elapsedTime() { if (!stopped) { throw new IllegalStateException("Error while stoping timestamp"); } return timeUnit.convert(stop - start, TimeUnit.NANOSECONDS); } @Override public String toString() { try { return elapsedTime() + " " + timeUnit; } catch (IllegalStateException ex) { return " Timestamp didn't stop"; } } public String units() { return timeUnit.toString(); }}

輸出:Synchronized Vector testTest took 6187 NANOSECONDSUnsynchronized vector testTest took 309 NANOSECONDSUnsynchronized operation saves 587.8 NANOSECONDS per callSynchronized arraylist testTest took 8354 NANOSECONDSUnsynchronized arraylist testTest took 5878 NANOSECONDSUnsynchronized operation saves 247.6 NANOSECONDS per call

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538924.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538924.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538924.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

cuda nvcc版本不一致_windows 驗證CUDA和CUDNN是否安裝成功

安裝完成CUDA&#xff0c;使用 nvcc -V 驗證是否安裝成功&#xff0c;看到如下信息說明安裝成功接下來就可以安裝 cuDNN 了。安裝cuDNN下載 cuDNN&#xff0c;下載之前需要先注冊一下 Nvidia 的賬號&#xff0c;下載地址為&#xff1a;https://developer.nvidia.com/rdp/cudnn-…

Nova Cell

Nova Cell V2 詳解 現在 &#xff0c;OpenStack 在控制平面上的性能瓶頸主要在 Message Queue 和 Database 。 尤其是 Message Queue , 隨著計算節點的增加 &#xff0c; 性能變的越來越差 。 為了應對這種情況 &#xff0c; Nova 很早之前提出來 nova-cell ( 以下以 cellv1 代…

Android 通過WIFI狀態監聽廣播,判斷進入指定wifi范圍

原文地址&#xff1a;http://blog.csdn.net/kongxiuqi/article/details/52524500 --------------------------------------------- WIFI狀態變化會發送廣播&#xff0c;一些可用的廣播在WifiManger.java中可以看到。 廣播一&#xff1a;WIFI 狀態開關變化的監聽&#xff0c;en…

2018年度最佳網頁設計與開發教程

任何一個網站從開發到最終上線&#xff0c; 都是需要團隊協作且謹慎的一個過程&#xff0c;而實際中往往會遇到各類問題&#xff0c;所以網頁設計師通常需要扮演多種角色&#xff0c;除了掌握必備的網頁設計技能外&#xff0c;更應該對后期的開發流程及內容有所了解&#xff0c…

mysql_ping()函數的作用以及返回值的類型正確的是,[單選] mysql_ping()函數的作用以及返回值的類型正確的是:()...

[單選] mysql_ping()函數的作用以及返回值的類型正確的是&#xff1a;()更多相關問題中華田園犬&#xff0c;雄性&#xff0c;2歲&#xff0c;昨晚外出未歸&#xff0c;今晨發現患犬精神沉郁&#xff0c;呼吸急促&#xff0c;體溫39℃&#xff0c;左胸側壁中下部有創1884年新疆…

java 截取byte數組_2020年的秋招已經開始了!最新Java面試題大全(文末附參考答案)送給大家...

包含的模塊本文分為十九個模塊&#xff0c;分別是&#xff1a;Java 基礎、容器、多線程、反射、對象拷貝、Java Web 、異常、網絡、設計模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM共包含 208 道面…

MVP模式在Android項目中的使用

煩了在Activity中編寫太多的代碼&#xff0c;該app由我來主導。就選擇用MVP模式。 概述 MVP是模型&#xff08;Model&#xff09;、視圖&#xff08;View&#xff09;、主持人&#xff08;Presenter&#xff09;的縮寫&#xff0c;分別代表項目中3個不同的模塊。 模型&#…

運行時錯誤7內存溢出_C++程序運行時的內存模型

C程序在運行時會將內存劃分為4個區域&#xff1a;1代碼區&#xff1a;存放函數體的二進制代碼&#xff0c;由操作系統進行管理2全局區&#xff1a;存放程序的全局變量、靜態變量、常量3棧區&#xff1a;由編譯器進行自動分配和釋放&#xff0c;存放函數的參數值&#xff0c;局部…

php strip_tags 少,詳解PHP函數 strip_tags的用法不足之處

這篇文章主要介紹了詳解PHP函數 strip_tags 處理字符串缺陷bug的相關資料,需要的朋友可以參考下詳解PHP函數 strip_tags 處理字符串缺陷bugPHP 函數 strip_tags() 是一個常用函數&#xff0c;該函數可以剝去字符串中的 HTML、XML 以及 PHP 的標簽。極大方便了對字符串的操作&am…

玩轉Android之MVVM開發模式實戰,炫酷的DataBinding!

原文&#xff1a;http://blog.csdn.net/u012702547/article/details/52077515 --------------------------------------------------------- MVP可以結合android的DataBinding -------------------------以下轉載--------------- C# 很早就有了MVVM的開發模式&#xff0c;An…

打造一款便攜版的Sublime Text

https://segmentfault.com/a/1190000000707661 https://www.cnblogs.com/52cik/p/sublime-diy.html 直接安裝Sublime Text&#xff0c;不要打開 大家可以參照上文提到的《Sublime Text 全程指引》中的步驟去進行安裝。我這里使用的是Sublime Text 2&#xff0c;其實3也是一樣的…

confluence創建頁面加載緩慢_樹莓派4B使用docker安裝confluence

說明confluence是一個專業的企業知識管理與協同軟件&#xff0c;可以用于構建企業wiki。通過它可以實現團隊成員之間的協作和知識共享。現在大多數公司都會部署一套confluence&#xff0c;用作內部wiki。另外confluence也可以作為個人的知識管理工具來用&#xff0c;只需要花10…

python用map提取一個數的個十百位數_如何使用python中的map函數?

我們在使用python過程中&#xff0c;為了避免錯誤刪除&#xff0c;會選擇做好一個序列后可以插入另外的序列中做為新序列的一部分內容。方便完成一些復雜的工程或多個片段分別編輯后再串成一個完整工程的操作。之前小編向大家介紹了在序列中起到累計作用的reduce函數(https://w…

matlab粒子加速器仿真,粒子群算法優化PID參數 仿真不出結果 程序如下

用的是《MATLAB智能算法30個案例分析》中的程序1.文件名為PSO_PID.mfunction z PSO_PID(x)assignin(base,Kp,x(1)); % 粒子群依次賦值給Kp 這部分運行結果> PSO_PIDassignin(base,Ki,x(2)); …

CentOS5、6的啟動流程

CentOS5/6的啟動流程啟動流程畫了張圖,看著更清晰些: (centos7的啟動流程變化挺大的,這部分待補充)補充(/etc/rc.d/rc.local 不屬于任何服務,為特殊文件,可將不能定義為服務又想開機運行的命令定義在此文件中)添加自定義服務:[rootel5 init.d]# vi /etc/init.d/testsrv #!/bin…

Spark交互式分析平臺Apache Zeppelin的安裝

Zeppelin介紹 Apache Zeppelin提供了web版的類似ipython的notebook&#xff0c;用于做數據分析和可視化。背后可以接入不同的數據處理引擎&#xff0c;包括Spark, Hive, tajo等&#xff0c;原生支持Scala, Java, shell, markdown等。它的整體展現和使用形式和Databricks Cloud是…

win7 php zend,win7系統打開WZend Studio PHP出錯的解決方法

很多朋友安裝win7系統后&#xff0c;在使用的過程中會遇到win7系統打開WZend Studio PHP出錯的情況&#xff0c;可能有很多用戶還是不能自己處理win7系統打開WZend Studio PHP出錯的問題&#xff0c;其實簡單的來說處理win7系統打開WZend Studio PHP出錯的問題只需要按照 1、在…

9個元素換6次達到排序序列_C語言必學的12個排序算法:希爾排序(第3篇)

基本思想希爾排序&#xff08;Shells Sort&#xff09;&#xff0c;以發明人命名&#xff0c;又稱為縮小增量排序&#xff0c;也是一種插入排序算法。主要思想&#xff1a;直接插入排序算法時間和待排數據有關&#xff0c;其平均復雜度是O(n^2)&#xff0c;但是在待排數據已經有…

java快捷鍵禁用_pycharm 掌握這些快捷鍵,你就是大神!!

最重要的快捷鍵1. ctrlshiftA:萬能命令行 2. shift兩次:查看資源文件新建工程第一步操作1. module設置把空包分層去掉,compact empty middle package 2. 設置當前的工程是utf-8,設置的Editor-->File Encodings-->全部改成utf-8,注釋1. ctrl/:單行注釋光標操作1. ctrlalte…

如何在 5 分鐘內讀懂區塊鏈的架構思維?

作為入門者&#xff0c;如何在最短的時間了解區塊鏈技術&#xff0c;區塊鏈思維&#xff0c;以及比特幣的金融原理呢&#xff1f;本文嘗試從比特幣的架構設計思維出發&#xff0c;讓人從宏觀上搞清楚區塊鏈的技術本質。 本文授權轉載自阿里技術 作者 | 鄭吉 區塊鏈不是一種技術…