java 操作mongodb 进行批量 无指定id插入操作 1、ArrayList未初始化 30000条数据批量插入测试 2、ArrayList初始化大小 30000条数据批量插入测试 3、LinkedList 30000条数据批量插入测试 4、3条线程,每条10000数据,同时操作插入测试 package io.renren.datasource.mongo; import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; /** * mongodb插入测试 */ public class MongodbOneThread { private static void insert(MongoCollection<Document> collection) { Document document = new Document("name", "dog"); List<Document> documents = new ArrayList<Document>(); documents.add(document); collection.insertMany(documents); } /** * ArrayList未初始化 30000条数据批量插入测试 * @param collection */ private static void insert1(MongoCollection<Document> collection) { List<Document> documents = new ArrayList<Document>(); for (int num=0; num<30000; num++) { documents.add(new Document("name", "dog")); } collection.insertMany(documents); } /** * ArrayList初始化大小 30000条数据批量插入测试 * @param collection */ private static void insert2(MongoCollection<Document> collection) { List<Document> documents = new ArrayList<Document>(30000); for (int num=0; num<30000; num++) { documents.add(new Document("name", "dog")); } collection.insertMany(documents); } /** * LinkedList 30000条数据批量插入测试 * @param collection */ private static void insert4(MongoCollection<Document> collection) { List<Document> documents = new LinkedList<Document>(); for (int num=0; num<30000; num++) { documents.add(new Document("name", "dog")); } collection.insertMany(documents); } public static void main(String args[]) { MongoClient mongoClient = null; try { mongoClient = new MongoClient("localhost", 27017); MongoDatabase mongoDatabase = mongoClient.getDatabase("admin"); System.out.println("Connect to database successfully"); MongoCollection<Document> collection = mongoDatabase .getCollection("test"); // long start = System.currentTimeMillis(); // for (int num=0; num<30000; num++) { // insert(collection); // } // long end = System.currentTimeMillis(); // System.out.println(end-start); long start1 = System.currentTimeMillis(); insert1(collection); long end1 = System.currentTimeMillis(); System.out.println("ArrayList未初始化:"+(end1-start1)); long start2 = System.currentTimeMillis(); insert2(collection); long end2 = System.currentTimeMillis(); System.out.println("ArrayList初始化大小:"+(end2-start2)); long start4 = System.currentTimeMillis(); insert4(collection); long end4 = System.currentTimeMillis(); System.out.println("LinkedList初始化大小:"+(end4-start4)); long start3 = System.currentTimeMillis(); ExecutorService executorService = Executors.newFixedThreadPool(3); for (int i = 0; i < 3; i++) { final int task = i; Future<Integer> future = executorService.submit(new Callable<Integer>() { public Integer call() throws Exception { int status = 0; try { List<Document> documents = new LinkedList<Document>(); for (int num=0; num<10000; num++) { documents.add(new Document("name", "dog")); } collection.insertMany(documents); } catch (Exception e) { e.printStackTrace(); } return status; } }); } // TODO 结束所有线程 executorService.shutdown(); // TODO 这个方法是统计所有线程全部执行完毕的时间 while(true){ if(executorService.isTerminated()){ long end3 = System.currentTimeMillis(); System.out.println("3个线程执行用时: " + (end3 - start3) + "ms"); break; } } } catch (Exception e) { System.err.println(e.getClass().getName() + ": " + e.getMessage()); } finally{ mongoClient.close(); } } }
mongodb插入测试
最新推荐文章于 2022-07-17 07:51:47 发布