- 浏览: 53638 次
- 性别:
- 来自: 北京
文章分类
最新评论
package fubar;
import gnu.trove.map.hash.TIntObjectHashMap;
import java.util.HashMap;
import javolution.util.FastMap;
import cern.colt.map.OpenIntIntHashMap;
import cern.colt.map.OpenIntObjectHashMap;
public class Compare {
public static void main(String args[]) {
System.out.println("1st line: time used(s)\n2nd line: heap memory used so far(MB)");
int n = 100000000;
long startTime = System.nanoTime();
long startHeapSize = Runtime.getRuntime().freeMemory();
// BEGIN: benchmark for Java's built-in hashmap
System.out.println("\n===== Java's built-in HashMap =====");
HashMap jIntIntMap = new HashMap();
System.out.println("\n-- " + n + " puts(key, value) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
jIntIntMap.put(i, new float[] { 0f, 1f, 2f, 3f, 4f });
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
System.out.println("\n-- " + n + " gets(key) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
jIntIntMap.get(i);
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
System.out.println("\n-- " + n + " containsKey(key) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
jIntIntMap.containsKey(i);
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
// END
// //////////////////////////////////////////////////////////////////////////////////////////
// BEGIN: benchmark for Java's built-in hashmap
{
System.out.println("\n===== Javolution HashMap =====");
FastMap fastMap = new FastMap();
System.out.println("\n-- " + n + " puts(key, value) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
fastMap.put(i, new float[] { 0f, 1f, 2f, 3f, 4f });
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
System.out.println("\n-- " + n + " gets(key) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
fastMap.get(i);
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
System.out.println("\n-- " + n + " containsKey(key) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
fastMap.containsKey(i);
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
}
// END
// //////////////////////////////////////////////////////////////////////////////////////////
// BEGIN: benchmark for Trove's TIntIntHashMap
System.out.println("\n===== Trove's TIntIntHashMap =====");
TIntObjectHashMap tIntIntMap = new TIntObjectHashMap();
System.out.println("\n-- " + n + " puts(key, value) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
tIntIntMap.put(i, new float[] { 0f, 1f, 2f, 3f, 4f });
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
System.out.println("\n-- " + n + " gets(key) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
tIntIntMap.get(i);
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
System.out.println("\n-- " + n + " containsKey(key) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
tIntIntMap.containsKey(i);
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
// END
// BEGIN: benchmark for Colt's OpenIntIntHashMap
System.out.println("\n===== Colt's OpenIntIntHashMap =====");
OpenIntObjectHashMap cIntIntMap = new OpenIntObjectHashMap();
System.out.println("\n-- " + n + " puts(key, value) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
cIntIntMap.put(i, new float[] { 0f, 1f, 2f, 3f, 4f });
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
System.out.println("\n-- " + n + " gets(key) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
cIntIntMap.get(i);
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
System.out.println("\n-- " + n + " containsKey(key) --");
startTime = System.nanoTime();
for (int i = 0; i < n; i++) {
cIntIntMap.containsKey(i);
}
System.out.println((System.nanoTime() - startTime) / 1000000000.0);
System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);
// END
}
}
发表评论
-
es recover
2015-07-01 14:43 565on log operations 2015-07-01 14 ... -
java
2012-02-09 23:35 760看看性能!加载15万多个词,搜索不到1毫秒。 不知和ZZL算 ... -
单例模式收藏
2011-10-25 09:08 889public class Singleton { ... -
lucene 遍历索引
2011-06-09 12:45 1310使用Lucene的API遍历 ... -
十进制转二进制
2011-05-03 10:27 2006十进制转二进制: 用2辗转相除至结果为1 将余数 ... -
Lucene near real time search
2011-04-15 09:48 1821在2.9之前,要看到index writer上发生的更 ... -
ZoieSystem
2011-04-11 12:45 768ZoieSystem是可以使用spring进行配置的,一个典型 ... -
Apache Mahout 介绍集合
2011-04-04 19:08 1439Apache Mahout 是 ASF(Apache S ... -
字符串排列组合
2011-02-18 16:15 1069public class Zuhe { public sta ... -
nio分割普通文件
2011-01-25 08:45 711package utils; import java.i ... -
java 面试收集
2011-01-10 17:12 7861. ArrayList 和Vector是采用数组方式存 ... -
ARRAYLIST VECTOR LINKEDLIST 区别与用法
2011-01-08 13:37 771最近用到了,所以依然是转载ArrayList 和Vector是 ... -
HashSet<E> ConcurrentHashMap和HashMap
2011-01-08 22:46 920类 HASHSET<E> 所有已 ...
相关推荐
这个“java集合类性能测试源代码”很可能是为了对比不同集合类在特定场景下的性能表现,帮助开发者选择最适合的集合实现。下面将详细解释Java集合框架中的主要类和它们的性能特性。 1. **ArrayList与LinkedList** ...
本测试着重探讨了Java集合类中的Set接口实现类(如HashSet)以及List接口实现类(如ArrayList和LinkedList)在进行增、删、改、查操作时的性能差异。 首先,我们来看ArrayList。ArrayList是一个基于数组实现的列表...
根据给定文件的信息,我们可以提炼出以下关于Java集合的关键知识点: ### 1. Java集合概述与常见类 Java集合框架是Java平台的核心组件之一,它为开发者提供了多种数据结构来存储和操作对象集合。Java集合主要包括...
- **性能测试工具**:如JMeter、LoadRunner等工具可以帮助开发者模拟不同负载情况下的系统表现。 - **性能监控平台**:使用Prometheus、Grafana等工具实时监控系统的关键指标,及时发现并解决问题。 - **代码剖析...
6. **测试与优化**:编写单元测试以确保集合类的正确性,并对其进行性能测试以进行优化。这可能涉及调整数据结构、算法或同步策略。 7. **文档注释**:为了方便其他开发者使用你的自定义集合类,记得添加详细的...
Java提供了丰富的多线程工具,如ExecutorService和并发集合。理解如何正确使用这些工具,避免死锁和竞态条件,可以提高程序并行处理能力,充分利用多核处理器。 数据库交互是许多Java应用的性能瓶颈。优化SQL查询,...
本测试主要针对Java集合知识进行考核,包括对象数组、集合与数组的区别、集合操作方法、并发修改异常处理、以及ArrayList、LinkedList和Vector等具体集合类的特点。 1. 对象数组是Java中的一种数据结构,它存储的是...
Java集合框架是Java编程语言中处理对象集合的一套接口和类。该框架提供了用于存储和操作集合的标准方法。在Java集合框架中,基本的接口分为两大类:Collection和Map。 Collection接口用于表示一组对象,称为其元素...
在这个场景中,我们关注的是一个Java客户端,它被设计用于并发访问MongoDB数据库并进行性能测试。这个客户端涵盖了三个主要操作:查询、修改和插入,这些都是数据库操作中的基本且重要的功能。 首先,让我们深入...
Java集合框架是Java编程语言中用于存储和操作数据的接口和类的集合。它包含了多种数据结构,如列表(List)、集合(Set)、映射(Map)等。集合框架的目的是为了提供一套统一的集合操作方法,以降低编程时的复杂性,...
这里我们根据提供的测试题内容,来深入探讨Java集合框架的一些关键知识点。 1. **对象数组**:对象数组是引用数据类型,它存储的是对象的引用而非实际对象。这意味着当你创建一个对象数组时,数组中每个元素都是...
23. **定期进行性能测试**:通过性能测试发现问题并持续优化。 二、Java高性能系统常见设计与优化 这部分资料可能涵盖系统架构设计、网络优化、数据库优化等方面,包括但不限于: 1. **负载均衡**:通过负载均衡器...
8. **工具与框架**:利用性能分析工具(如JProfiler, YourKit等)和性能测试工具(如JMeter, Gatling等)可以帮助识别瓶颈并进行优化。此外,Spring框架等也可能被提及,讲解如何利用其特性来提升性能。 9. **JVM...
在Java编程中,多线程安全集合是程序员在并发环境下处理数据共享时必须考虑的关键概念。这些集合确保了在多个线程访问时的数据一致性、完整...在实际开发中,我们应结合业务需求和性能测试,选择最适合的线程安全集合。
在Java集合知识测试中,涉及到了多个关键概念和方法,以下是对这些知识点的详细解释: 1. **对象数组**:对象数组是Java中的引用数据类型,存储的是对象的引用,而不是对象本身。这意味着数组中的每个元素都是指向...
常见的性能测试类型有负载测试(模拟正常和预期负载)、压力测试(超出正常负载以查看系统崩溃点)、耐久测试(长时间运行以检查系统稳定性和资源泄露)和稳定性测试(在特定负载下长时间运行以检测性能退化)。...