文档章节

JAVA里面一维数组和二维数组哪个速度更快?

傲娇字符
 傲娇字符
发布于 2018/05/04 10:21
字数 325
阅读 114
收藏 3

直接上代码和结论:

package com.chz.apps.data.test;

import org.junit.Test;

public class DemoTest {

    @Test
    public void stringArrayTest(){
        //准备数据
        String[] bmp1 = new String[4800];
        for (int i = 0 ; i < 4800 ; i++) {
            bmp1[i] = i+"";
        }


        String[][] bmp2 = new String[80][60];
        for (int i = 0 ; i < 80 ; i++) {
            for (int j = 0 ; j < 60 ; j++) {
                bmp2[i][j] = i+"-"+j;
            }
        }

        //第一个测试
        Long start = System.nanoTime();
        for (int y = 0;y<60;y++){
            String res = bmp1[40 + 80*y];
        }
        System.out.println("字符串数组-本次耗时1:"+(System.nanoTime() - start));

        //第二个测试
        start = System.nanoTime();

        for(int y = 0;y<60;y++){
            String res = bmp2[40][y];
        }

        System.out.println("字符串数组-本次耗时2:"+(System.nanoTime() - start));
    }


    @Test
    public void intArrayTest(){
        //准备数据
        int[] bmp1 = new int[4800];
        for (int i = 0 ; i < 4800 ; i++) {
            bmp1[i] = i;
        }


        int[][] bmp2 = new int[80][60];
        for (int i = 0 ; i < 80 ; i++) {
            for (int j = 0 ; j < 60 ; j++) {
                bmp2[i][j] = i+j;
            }
        }

        //第一个测试
        Long start = System.nanoTime();
        for (int y = 0;y<60;y++){
            int res = bmp1[40 + 80*y];
        }
        System.out.println("原始数据类型-本次耗时1:"+(System.nanoTime() - start));

        //第二个测试
        start = System.nanoTime();

        for(int y = 0;y<60;y++){
            int res = bmp2[40][y];
        }

        System.out.println("原始数据类型-本次耗时2:"+(System.nanoTime() - start));
    }

}

用例1的测试结果:

字符串数组-本次耗时1:18972
字符串数组-本次耗时2:5909

 

用例2的测试结果:

原始数据类型-本次耗时1:34523
原始数据类型-本次耗时2:3110

 

 

© 著作权归作者所有

共有 人打赏支持
傲娇字符
粉丝 6
博文 43
码字总数 17111
作品 0
武汉
架构师
私信 提问
java基础重点讲解,看了还不会找我(五)

视频下载地址:https://download.csdn.net/download/xxfisgirlgad/10886817 ###05.01_Java语言基础(数组概述和定义格式说明)(了解) * A:为什么要有数组(容器) * 为了存储同种数据类型的多个值...

谢小芳是女神
2018/12/30
0
0
【翻译】JAVA堆和原生内存谁更快?

这是我的第一篇翻译的比较完整的博文,若有错处请指出。这篇文章从两个测试去比较了JAVA堆和原生内存的读写操作。 译文出处:http://lipspace.duapp.com 原文出处:http://mentablog.solive...

陈昊Sevens
2014/04/03
0
0
Android JNI开发系列(七)访问数组

JNI访问数组 JNI 中的数组分为基本类型数组和对象数组,它们的处理方式是不一样的,基本类型数组中的所有元素都是 JNI 的基本数据类型,可以直接访问。而对象数组中的所有元素是一个类的实例...

蔡小鹏
2018/10/14
0
0
【广州】我想应聘一个C/C++/java软件开发职位

本人预计六月底七月初将去广州生活。希望在广州找到一份c/c++/java方面的软件开发职位。 以下 是我的简历,希望广州地区的it企业可以联系我。 周西的个人简历 姓  名: 周西 性  别: 男...

numcpp
2012/06/07
512
1
【JavaSE(二)】Java语法基础(下)

原文地址:https://www.cloudcrossing.xyz/post/34/ 1 方法 1.1 方法的概述 方法,简单的说就是完成特定功能的代码块(注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法)。 ...

苍云横渡
2018/05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
3
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
5
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部