diff --git a/test/cpp/Makefile b/test/cpp/Makefile
index 6afb30b..21c09ec 100644
--- a/test/cpp/Makefile
+++ b/test/cpp/Makefile
@@ -7,28 +7,29 @@
 target: all
 
 # Tools
-THRIFT = /usr/local/bin/thrift
+THRIFT = thrift
 CC     = g++
 LD     = g++
 
 # Compiler flags
 LIBS  = ../../lib/cpp/server/TSimpleServer.cc \
 	../../lib/cpp/protocol/TBinaryProtocol.cc \
+	../../lib/cpp/transport/TBufferedTransport.cc \
 	../../lib/cpp/transport/TServerSocket.cc \
 	../../lib/cpp/transport/TSocket.cc
-CFL   = -Wall -g -I../../lib/cpp $(LIBS)
-CFL   = -Wall -g -lthrift -I../../lib/cpp
+CFL   = -Wall -O3 -Igen-cpp -I../../lib/cpp $(LIBS)
+CFL   = -Wall -O3 -Igen-cpp -I../../lib/cpp -lthrift
 
 all: server client
 
 stubs: ../ThriftTest.thrift
-	$(THRIFT) ../ThriftTest.thrift
+	$(THRIFT) -cpp ../ThriftTest.thrift
 
 server: stubs
-	g++ -o TestServer $(CFL) TestServer.cc gen-cpp/ThriftTest.cc
+	g++ -o TestServer $(CFL) src/TestServer.cc gen-cpp/ThriftTest.cc
 
 client: stubs
-	g++ -o TestClient $(CFL) TestClient.cc gen-cpp/ThriftTest.cc
+	g++ -o TestClient $(CFL) src/TestClient.cc gen-cpp/ThriftTest.cc
 
 clean:
 	rm -fr TestServer TestClient gen-cpp
diff --git a/test/cpp/TestClient.cc b/test/cpp/src/TestClient.cc
similarity index 90%
rename from test/cpp/TestClient.cc
rename to test/cpp/src/TestClient.cc
index 6d2a68e..6bd06b9 100644
--- a/test/cpp/TestClient.cc
+++ b/test/cpp/src/TestClient.cc
@@ -1,11 +1,26 @@
 #include <stdio.h>
 #include <unistd.h>
+#include <sys/time.h>
 #include "protocol/TBinaryProtocol.h"
-#include "client/TSimpleClient.h"
+#include "transport/TBufferedTransport.h"
 #include "transport/TSocket.h"
-#include "gen-cpp/ThriftTest.h"
+#include "ThriftTest.h"
 using namespace std;
 
+extern uint32_t g_socket_syscalls;
+
+// Current time, microseconds since the epoch
+uint64_t now()
+{
+  long long ret;
+  struct timeval tv;
+  
+  gettimeofday(&tv, NULL);
+  ret = tv.tv_sec;
+  ret = ret*1000*1000 + tv.tv_usec;
+  return ret;
+}
+
 int main(int argc, char** argv) {
   string host = "localhost";
   int port = 9090;
@@ -22,18 +37,25 @@
   }
 
   TSocket socket(host, port);
-  TSimpleClient simpleClient(&socket);
+  TBufferedTransport bufferedSocket(&socket, 2048);
   TBinaryProtocol binaryProtocol;
-  ThriftTestClient testClient(&simpleClient, &binaryProtocol);
+  ThriftTestClient testClient(&bufferedSocket, &binaryProtocol);
   
   int test = 0;
   for (test = 0; test < numTests; ++test) {
+
+    /**
+     * CONNECT TEST
+     */
     printf("Test #%d, connect %s:%d\n", test+1, host.c_str(), port);
-    bool success = simpleClient.open();
-    if (!success) {
-      printf("Connect failed, server down?\n");
+    try {
+      bufferedSocket.open();
+    } catch (TTransportException& ttx) {
+      printf("Connect failed: %s\n", ttx.getMessage().c_str());
       continue;
     }
+
+    uint64_t start = now();
     
     /**
      * VOID TEST
@@ -319,9 +341,13 @@
     }
     printf("}\n");
 
-    simpleClient.close();
+    uint64_t stop = now();
+    printf("Total time: %lu us\n", stop-start);
+
+    bufferedSocket.close();
   }
 
+  printf("\nSocket syscalls: %u", g_socket_syscalls);
   printf("\nAll tests done.\n");
   return 0;
 }
diff --git a/test/cpp/TestServer.cc b/test/cpp/src/TestServer.cc
similarity index 97%
rename from test/cpp/TestServer.cc
rename to test/cpp/src/TestServer.cc
index 8138166..206b6f5 100644
--- a/test/cpp/TestServer.cc
+++ b/test/cpp/src/TestServer.cc
@@ -2,7 +2,7 @@
 #include "protocol/TBinaryProtocol.h"
 #include "server/TSimpleServer.h"
 #include "transport/TServerSocket.h"
-#include "gen-cpp/ThriftTest.h"
+#include "ThriftTest.h"
 using namespace std;
 
 class TestServer : public ThriftTestServerIf {
@@ -117,12 +117,12 @@
     return thing;
   }
 
-  Numberz testEnum(Numberz thing = 0) {
+  Numberz testEnum(Numberz thing) {
     printf("testEnum(%d)\n", thing);
     return thing;
   }
 
-  UserId testTypedef(UserId thing = 0) {
+  UserId testTypedef(UserId thing) {
     printf("testTypedef(%lu)\n", thing);
     return thing;
   }
