You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

T0005_ShallowSpeedTest.java 3.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. * Copyright (C) 2007-2008, Robin Rosenberg <robin.rosenberg@dewire.com>
  3. * Copyright (C) 2007, Shawn O. Pearce <spearce@spearce.org>
  4. * and other copyright owners as documented in the project's IP log.
  5. *
  6. * This program and the accompanying materials are made available
  7. * under the terms of the Eclipse Distribution License v1.0 which
  8. * accompanies this distribution, is reproduced below, and is
  9. * available at http://www.eclipse.org/org/documents/edl-v10.php
  10. *
  11. * All rights reserved.
  12. *
  13. * Redistribution and use in source and binary forms, with or
  14. * without modification, are permitted provided that the following
  15. * conditions are met:
  16. *
  17. * - Redistributions of source code must retain the above copyright
  18. * notice, this list of conditions and the following disclaimer.
  19. *
  20. * - Redistributions in binary form must reproduce the above
  21. * copyright notice, this list of conditions and the following
  22. * disclaimer in the documentation and/or other materials provided
  23. * with the distribution.
  24. *
  25. * - Neither the name of the Eclipse Foundation, Inc. nor the
  26. * names of its contributors may be used to endorse or promote
  27. * products derived from this software without specific prior
  28. * written permission.
  29. *
  30. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  31. * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  32. * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  33. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  34. * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  35. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  36. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  37. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  38. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  39. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  40. * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  41. * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  42. * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  43. */
  44. package org.eclipse.jgit.lib;
  45. import java.io.File;
  46. import java.io.IOException;
  47. import junit.textui.TestRunner;
  48. public class T0005_ShallowSpeedTest extends SpeedTestBase {
  49. protected void setUp() throws Exception {
  50. prepare(new String[] { "git", "rev-list", "365bbe0d0caaf2ba74d56556827babf0bc66965d" });
  51. }
  52. public void testShallowHistoryScan() throws IOException {
  53. long start = System.currentTimeMillis();
  54. Repository db = new Repository(new File(kernelrepo));
  55. Commit commit = db.mapCommit("365bbe0d0caaf2ba74d56556827babf0bc66965d");
  56. int n = 1;
  57. for (;;) {
  58. ObjectId[] parents = commit.getParentIds();
  59. if (parents.length == 0)
  60. break;
  61. ObjectId parentId = parents[0];
  62. commit = db.mapCommit(parentId);
  63. commit.getCommitId().name();
  64. ++n;
  65. }
  66. assertEquals(12275, n);
  67. long stop = System.currentTimeMillis();
  68. long time = stop - start;
  69. System.out.println("native="+nativeTime);
  70. System.out.println("jgit="+time);
  71. // ~0.750s (hot cache), ok
  72. /*
  73. native=1795
  74. jgit=722
  75. */
  76. // native git seems to run SLOWER than jgit here, at roughly half the speed
  77. // creating the git process is not the issue here, btw.
  78. long factor10 = (nativeTime*150/time+50)/100;
  79. assertEquals(3, factor10);
  80. }
  81. public static void main(String[] args) {
  82. TestRunner.run(T0005_ShallowSpeedTest.class);
  83. }
  84. }