skip to main content
10.1145/2001420.2001456acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

CoDeSe: fast deserialization via code generation

Published:17 July 2011Publication History

ABSTRACT

Many tools for automated testing, model checking, and debugging store and restore program states multiple times. Storing/restoring a program state is commonly done with serialization/deserialization. Traditionally, the format for stored states is based on data: serialization generates the data that encodes the state, and deserialization interprets this data to restore the state. We propose a new approach, called CoDeSe, where the format for stored states is based on code: serialization generates code whose execution restores the state, and deserialization simply executes the code. We implemented CoDeSe in Java and performed a number of experiments on deserialization of states. CoDeSe provides on average more than 6X speedup over the highly optimized deserialization from the standard Java library. Our new format also allows simple parallel deserialization that can provide additional speedup on top of the sequential CoDeSe but only for larger states.

References

  1. N. Abu-Ghazaleh and M. J. Lewis. Differential deserialization for optimized SOAP performance. In SC, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. N. Abu-Ghazaleh, M. J. Lewis, and M. Govindaraju. Differential serialization for optimized SOAP performance. In HPDC, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. B. Aktemur, J. Jones, S. N. Kamin, and L. Clausen. Optimizing marshalling by run-time program generation. In GPCE, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. S. Artzi, S. Kim, and M. D. Ernst. ReCrash: Making software failures reproducible by preserving object states. In ECOOP, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Apache Avro home page. http://avro.apache.org/.Google ScholarGoogle Scholar
  6. J. Barnat, L. Brim, and P. Simecek. Cluster-based I/O-efficient LTL model checking. 2009.Google ScholarGoogle Scholar
  7. Dojo home page. http://dojotoolkit.org/.Google ScholarGoogle Scholar
  8. S. G. Elbaum, H. N. Chin, M. B. Dwyer, and J. Dokulil. Carving differential unit test cases from system test cases. In FSE, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. G. Elbaum, H. N. Chin, M. B. Dwyer, and M. Jorde. Carving and replaying differential unit test cases from system test cases. TSE, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. P. Godefroid. Model checking for programming languages using VeriSoft. In POPL, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java Language Specification. Sun Microsystems, Inc., 2005.Google ScholarGoogle Scholar
  12. T. Gvero, M. Gligoric, S. Lauterburg, M. d'Amorim, D. Marinov, and S. Khurshid. State extensions for Java PathFinder. In ICSE Demo, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. V. Hrubá, B. Krena, and T. Vojnar. Self-healing assurance based on bounded model checking. In EUROCAST, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. R. Iosif. Exploiting heap symmetries in explicit-state model checking of software. In ASE, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Java PathFinder (JPF) home page. http://babelfish.arc.nasa.gov/trac/jpf/.Google ScholarGoogle Scholar
  16. H. Jaygarl, S. Kim, T. Xie, and C. K. Chang. OCAT: Object capture-based automated testing. In ISSTA, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Java class file format. http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html.Google ScholarGoogle Scholar
  18. Java Native Interface programmer's guide and specification. http://java.sun.com/docs/books/jni/html/fldmeth.html.Google ScholarGoogle Scholar
  19. M. Jorde, S. G. Elbaum, and M. B. Dwyer. Increasing test granularity by aggregating unit tests. In ASE, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. S. Joshi and A. Orso. SCARPE: A technique and tool for selective capture and replay of program executions. In ICSM, 2007.Google ScholarGoogle ScholarCross RefCross Ref
  21. Java object serialization specification. http://download.oracle.com/javase/6/docs/platform/serialization/spec/serialTOC.html.Google ScholarGoogle Scholar
  22. JSON home page. http://www.json.org/.Google ScholarGoogle Scholar
  23. JSX home page. http://jsx.org/.Google ScholarGoogle Scholar
  24. S. Kamin, L. Clausen, and A. Jarvis. Jumbo: Run-time code generation for Java and its applications. In CGO, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. P. Kumar and T. Baar. Using AOP for discovering and defining executable test cases. In Ershov Memorial Conference, 2009.Google ScholarGoogle Scholar
  26. A. Leitner, I. Ciupa, M. Oriol, B. Meyer, and A. Fiva. Contract driven development = test driven development - writing test cases. In ESEC/FSE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. A. Leitner, A. Pretschner, S. Mori, B. Meyer, and M. Oriol. On the effectiveness of test extraction without overhead. In ICST, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Q. Luo, S. Zhang, J. Zhao, and M. Hu. A lightweight and portable approach to making concurrent failures reproducible. In FASE, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. L. B. Mesquita. Faster Java serialization. http://jserial.sourceforge.net/index.html.Google ScholarGoogle Scholar
  30. M. Musuvathi, S. Qadeer, T. Ball, G. Basler, P. A. Nainar, and I. Neamtiu. Finding and reproducing Heisenbugs in concurrent programs. In OSDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. A. Orso, S. Joshi, M. Burger, and A. Zeller. Isolating relevant component interactions with JINSI. In WODA, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. C. Pacheco, S. K. Lahiri, M. D. Ernst, and T. Ball. Feedback-directed random test generation. In ICSE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. R. Pelanek. Typical structural properties of state spaces. In SPIN Workshop, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  34. Protocol Buffers home page. http://code.google.com/apis/protocolbuffers/.Google ScholarGoogle Scholar
  35. G. Roşu and T. F. şerbănuţă. An overview of the K semantic framework. Journal of Logic and Algebraic Programming, 2010.Google ScholarGoogle Scholar
  36. V. Saraswat, B. Bloom, I. Peshansky, O. Tardieu, and D. Grove. Report on the programming language X10, 2010.Google ScholarGoogle Scholar
  37. B. Shah, P. R. Rao, B. Moon, and M. Rajagopalan. A data parallel algorithm for XML DOM parsing. In International XML Database Symposium, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. W. Tansey and E. Tilevich. Efficient automated marshaling of C++ data structures for MPI applications. In IPDPS, 2008.Google ScholarGoogle ScholarCross RefCross Ref
  39. W. Visser, K. Havelund, G. Brat, and S. Park. Model checking programs. J-ASE, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. XStream home page. http://xstream.codehaus.org/index.html.Google ScholarGoogle Scholar
  41. G. Xu, A. Rountev, Y. Tang, and F. Qin. Efficient checkpointing of Java software using context-sensitive capture and replay. In ESEC/FSE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. CoDeSe: fast deserialization via code generation

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      ISSTA '11: Proceedings of the 2011 International Symposium on Software Testing and Analysis
      July 2011
      394 pages
      ISBN:9781450305624
      DOI:10.1145/2001420

      Copyright © 2011 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 17 July 2011

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate58of213submissions,27%

      Upcoming Conference

      ISSTA '24

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader