|
Boost Users : |
From: Roger Wilco (wilco909_at_[hidden])
Date: 2004-03-28 21:34:28
I have a somewhat large (~100K lines) C++ server application. It uses
Boost (lots of smart pointer use, thread use, regex), Xerces XML
libraries, some MFC for GUI, and ADO for database access.
I tried to build a test build of my application using Microsoft's
Managed C++. I got all my code to compile, but I can't link to either
Boost or Xerces XML. Is this possible? Has anyone done this?
If I ultimately go the .NET route, I would replace Boost and Xerces with
functionality provided by the native .NET runtime libraries. However,
that would be a massive time consuming undertaking. At this point, I
just want to dip my toes in the water and observe pros/cons of .NET, and
have the option of migrating to .NET piecemeal.
I have solid experience with C# and Java and I am extremely experienced
with C++ (10 years). My main problems with C++ are:
- Compile times. On my 2.8GHz dev system, a rebuild takes ~20 minutes
and even a build after making a minor change takes 45 seconds. It's
amazing how VC++ build speeds really have remained so stagnant despite
increases in hardware speed. I realize VC++ is the slower of the IDEs
for build times.
- Debugging memory corruption or thread concurrency issues. This is
much easier in Java/C# and the tools for assisting are much easier to
use. I spent many days trying tools such as Purify for C++ and couldn't
produce any fruitful results.
- Diagnosing memory usage. My server application uses lots of memory.
After running for several hours under production conditions it will
reach around 400MB-1.3GB depending on the tasks its doing. I'd like to
get a general overview of where this memory is being used. I don't
suspect blatant memory leaks (new with no delete) but instead runaway
caches or legitimate usage. These issues are of course still present in
C#/Java but the diagnostic tools to address these issues seem to be much
better. I haven't found any usable C++ tool for this issue and I rely on
manually logging data points and manually trying to infer an idea of
what is happening.
- Java/C# is overall a better (easier/faster to develop/maintain)
development platform for this type of server application work. However,
I will happily stick with C++ if I can resolve these other issues. And I
am of course, concerned about any performance hit when migrating to
Java/C#. We max out CPU and RAM use, so these factors aren't important.
I couldn't take more than a 25% drop in efficiency.
Any other suggestions on my situation?
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net