230308 JAVA_성능비교

Myung A Lee·2023년 3월 8일
0

Code Review

목록 보기
4/5
post-thumbnail

ArrayList 와 LinkedList의 성능(속도 비교) 해보기

중간 부분에 데이터를 넣고자 할 때는 LinkedList가 마지막 부분에 데이터를 넣고자 할때는 ArrayList가 속도면에서 빠르다.

구현 화면

각각의 리스트의 마지막 부분에 데이터를 추가했을 때

각각의 리스트의 중간 부분에 데이터를 추가 했을 때

구현 코드

View - index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.6.3.min.js"></script>
<style>

</style>
</head>
<body>

	<h3>ArrayList & LinkedList의 속도 비교</h3>
	<!-- ArrayList & LinkedList에 100만개의 데이터를 넣을 것이다  -->
	
	<form action="compare">
		<input type="text" name="cnt" value="1000000"/>개의 데이터를 
		<select name="pos">
		<option value="mid">중간부분</option>
			<option value="last">끝부분</option>
		</select>
		에 넣기
		<button>시작</button>
	</form>
	
	<h3>ArrayList : ${arrList}</h3>
	<h3>LinkedList : ${lnkList}</h3>
</body>
<script>

</script>
</html>

Controller - CompareController.java

package kr.co.web.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kr.co.web.model.CompareModel;


@WebServlet("/compare")
public class CompareController extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		String cnt = req.getParameter("cnt");
		String pos = req.getParameter("pos");
		System.out.println(cnt +"/" +pos);
		
		CompareModel model = new CompareModel(pos, cnt);
		
		req.setAttribute("arrList", model.testArrayList());
		req.setAttribute("lnkList", model.testLinkedList());
		RequestDispatcher dis = req.getRequestDispatcher("index.jsp");
		dis.forward(req, resp);
	}

}

Model - CompareModel.jsp

package kr.co.web.model;

import java.util.ArrayList;
import java.util.LinkedList;

public class CompareModel {
	
	String pos;
	int cnt;
	long startTime;
	long endTime;
	
	ArrayList<String> arrList = new ArrayList<String>();
	LinkedList<String> lnkList = new LinkedList<String>();

	public CompareModel(String pos, String cnt) {
		// 1. 위치, 반복 횟수를 받아서 초기화
		this.pos = pos;
		this.cnt = Integer.parseInt(cnt);
		
		// 2. ArrayList와 LinkedList의 100개 데이터를 집어 넣는다. 
		//		- 가운데 값을 넣으려면 중간값이라는게 존재해야하므로
		
		for (int i=0;i<=100;i++) {
			arrList.add("data");
			lnkList.add("data");
		}
	}
	
	public String testArrayList() {
		startTime = System.currentTimeMillis();
		
		for(int i = 0; i<=cnt;i++) {
			if(pos.equals("mid")) {
				arrList.add(55,"add_data");
			}else {
				arrList.add("add_data");
			}
		}
		
		endTime = System.currentTimeMillis();
		return pos +" 부분에 걸린시간 : "+(endTime-startTime)+ "ms";
	}
	
	public String testLinkedList() {
		startTime = System.currentTimeMillis();
		
		for(int i = 0; i<=cnt;i++) {
			if(pos.equals("mid")) {
				lnkList.add(55,"add_data");
			}else {
				lnkList.add("add_data");
			}
		}
		
		
		endTime = System.currentTimeMillis();
		return  pos +" 부분에 걸린시간 : "+(endTime-startTime)+ "ms";
	}

}

0개의 댓글