Advertisement
yerzhik

Untitled

Aug 6th, 2014
316
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.56 KB | None | 0 0
  1. package dbtest;
  2.  
  3. import java.sql.*;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import java.util.Random;
  7.  
  8. public class DBTest {
  9.     private static Random random = new Random();
  10.  
  11.     public static void main(String args[ ])
  12.     {
  13.         try {
  14.             testFunction();
  15.         } catch (SQLException e) {
  16.             e.printStackTrace();
  17.         }
  18.     }
  19.  
  20.     public static void testFunction() throws SQLException {
  21.         random.setSeed(System.currentTimeMillis());
  22.         long startTime = 0;
  23.         long prepStatementStartTime = 0, endTime = 0;
  24.         List<Integer> statsID = new ArrayList<Integer>();
  25.         List<Integer> playersID = new ArrayList<Integer>();
  26.         Connection connection = DBUtil.getConnection();
  27.         connection.setAutoCommit(false);
  28.         try {
  29.             startTime = System.currentTimeMillis();
  30.             Statement statement = null;
  31.  
  32.             statement = connection.createStatement();
  33.  
  34.             StringBuilder queryBuilder = new StringBuilder(100);
  35.  
  36.             queryBuilder.append("SELECT * FROM bb_batter_season_stat limit 10000");
  37.  
  38.             System.out.println("Selecting 10000 elements from DB");
  39.             ResultSet result = statement.executeQuery(queryBuilder.toString());
  40.  
  41.             if (!result.next()) {
  42.                 System.out.println("No doctor with given id found");
  43.                 return;
  44.             }
  45.  
  46.             do {
  47.                 Integer id = result.getInt("id");
  48.                 Integer playerID = result.getInt("bb_players_id");
  49.                 statsID.add(id);
  50.                 playersID.add(playerID);
  51.             } while (result.next());
  52.  
  53.             System.out.println("Query returned " + statsID.size() + " elements");
  54.             queryBuilder = new StringBuilder(100);
  55.             queryBuilder.append("update bb_batter_season_stat SET \n" +
  56.                     "G=?,\n" +
  57.                     "ABvsL=?,\n" +
  58.                     "ABvsR=?,\n" +
  59.                     "RvsL=?,\n" +
  60.                     "RvsR=?,\n" +
  61.                     "HvsL=?,\n" +
  62.                     "HvsR=?,\n" +
  63.                     "d2BvsL=?,\n" +
  64.                     "d2BvsR=?,\n" +
  65.                     "t3BvsL=?,\n" +
  66.                     "t3BvsR=?,\n" +
  67.                     "HRvsL=?,\n" +
  68.                     "HRvsR=?,\n" +
  69.                     "RBlvsL=?,\n" +
  70.                     "RBlvsR=?,\n" +
  71.                     "BBvsL=?,\n" +
  72.                     "BBvsR=?,\n" +
  73.                     "SOvsL=?,\n" +
  74.                     "SOvsR=?,\n" +
  75.                     "AVGvsL=?,\n" +
  76.                     "AVGvsR=?,\n" +
  77.                     "OBPvsL=?,\n" +
  78.                     "OBPvsR=?,\n" +
  79.                     "SLGvsL=?,\n" +
  80.                     "SLGvsR=?,\n" +
  81.                     "OPS=?,\n" +
  82.                     "SB=?,\n" +
  83.                     "XBH=?,\n" +
  84.                     "CS=?,\n" +
  85.                     "SFvsL=?,\n" +
  86.                     "SFvsR=?,\n" +
  87.                     "TB=?,\n" +
  88.                     "IBB=?,\n" +
  89.                     "HBP=?,\n" +
  90.                     "GO=?,\n" +
  91.                     "FO=?,\n" +
  92.                     "NP=?,\n" +
  93.                     "PAvsL=?,\n" +
  94.                     "PAvsR=?,\n" +
  95.                     "AB_int=?,\n" +
  96.                     "R_int=?,\n" +
  97.                     "H_int=?,\n" +
  98.                     "d2B_int=?,\n" +
  99.                     "t3B_int=?,\n" +
  100.                     "HR_int=?,\n" +
  101.                     "RBI_int=?,\n" +
  102.                     "AVG_int=?,\n" +
  103.                     "SB_int=?,\n" +
  104.                     "G_field=?,\n" +
  105.                     "GS_field=?,\n" +
  106.                     "INN_field=?,\n" +
  107.                     "PO_field=?,\n" +
  108.                     "A_field=?,\n" +
  109.                     "E_field=?,\n" +
  110.                     "DP_field=?,\n" +
  111.                     "PB_field=?,\n" +
  112.                     "SB_field=?,\n" +
  113.                     "CS_field=?,\n" +
  114.                     "RF_field=?,\n" +
  115.                     "FPCT_field=?\n" +
  116.                     "WHERE id=?;");
  117.             PreparedStatement preparedStatement = connection.prepareStatement(queryBuilder.toString());
  118.             int repeate_amount = 100;
  119.             System.out.println("Starting second part. Repeat amount: " + repeate_amount + " stats size: " + statsID.size() );
  120.  
  121.             prepStatementStartTime = System.currentTimeMillis();
  122.  
  123.             for (int j = 0; j < repeate_amount; ++j) {
  124.                 for (int counter = 0; counter < statsID.size(); ++counter) {
  125.                     for (int i = 0; i < 19; ++i) {
  126.                         preparedStatement.setInt(i + 1, getRandomSmallInt());
  127.                     }
  128.  
  129.                     for (int i = 20; i <= 26; ++i) {
  130.                         preparedStatement.setFloat(i, getRandomFloat());
  131.                     }
  132.  
  133.                     for (int i = 27; i <= 46; ++i) {
  134.                         preparedStatement.setInt(i, getRandomSmallInt());
  135.                     }
  136.  
  137.                     preparedStatement.setFloat(47, getRandomFloat());
  138.  
  139.                     for (int i = 48; i <= 50; ++i) {
  140.                         preparedStatement.setInt(i, getRandomSmallInt());
  141.                     }
  142.  
  143.                     preparedStatement.setFloat(51, getRandomFloat());
  144.  
  145.                     for (int i = 52; i <= 58; ++i) {
  146.                         preparedStatement.setInt(i, getRandomSmallInt());
  147.                     }
  148.  
  149.                     preparedStatement.setFloat(59, getRandomFloat());
  150.                     preparedStatement.setFloat(60, getRandomFloat());
  151.                     preparedStatement.setShort(61, (short) (int) statsID.get(counter));
  152.                     preparedStatement.addBatch();
  153.                 }
  154.                 preparedStatement.executeBatch();
  155.             }
  156.             connection.commit();
  157.  
  158.             endTime = System.currentTimeMillis();
  159.  
  160.             System.out.println("First part: " + (prepStatementStartTime - startTime));
  161.             System.out.println("Second part: " + (endTime - prepStatementStartTime) + " ms");
  162.             System.out.println("Second part per update: " + (float)(endTime - prepStatementStartTime) / (float)(repeate_amount * statsID.size()) + " ms");
  163.         } finally {
  164.             connection.close();
  165.         }
  166.  
  167.         try {
  168.             Thread.currentThread().sleep(10000);
  169.         } catch (InterruptedException e) {
  170.             e.printStackTrace();
  171.         }
  172.     }
  173.  
  174.     private static float getRandomFloat() {
  175.         return random.nextFloat();
  176.     }
  177.  
  178.  
  179.     private static short getRandomSmallInt() {
  180.         return (short)random.nextInt(65535);
  181.     }
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement