I just committed the new "lite mode" refactoring for C++ and Java to SVN.
To use the new feature, add this line to your .proto file:
  option optimize_for = LITE_RUNTIME;
This will cause protoc to generate code which is just as fast as with
optimize_for = SPEED, but lacks descriptors, reflection, UnknownFieldSet,
and features which are tied to them.  This means the code can be linked
against a much smaller subset of the protocol buffers runtime library and
will not spend time at start-up building descriptors.

Currently, the C++ Makefile will compile libprotobuf and libprotobuf-lite as
independent, stand-alone libraries, even though the latter is a subset of
the former.  Is this what we want?  I'm not sure.  If we make libprotobuf
depend on libprotobuf-lite, then users who want the full library will have
to specify *both* when linking their own apps, unless we provide a
"protobuf-config" script or something like that.  Complicating things
further, if you app does not use extensions, then extension_set.cc can be
removed from the lite library to make it even smaller, but having three
separate libraries just seems excessive!
For Java, I have not yet updated the Maven POM to separate the libraries.
 I'm not sure how -- Greg, can you work on this?  "Lite" messages need only
the following classes:
  AbstractMessageLite.java
  ByteString.java
  CodedInputStream.java
  CodedOutputStream.java
  ExtensionRegistryLite.java
  FieldSet.java
  GeneratedMessageLite.java
  InvalidProtocolBufferException.java
  Internal.java
  MessageLite.java
  UninitializedMessageException.java
  WireFormat.java

*Numbers*

C++, as measured by the "size" command on Linux:
  libprotobuf.so: 948k
  libprotobuf-lite.so: 148k
  libprotobuf-lite.so with extension_set.cc removed: 91k

Java, measured by totalling the sizes of the .class files:
  full library:  904k
  lite library:  120k

I suspect we can further reduce some of these numbers with some more work.
 For instance, an extension-less Java lite library might be as much as 50k
smaller, though will require a bit more work than simply yanking some
classes.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@googlegroups.com
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to