Really.. C++ is a relatively high commitment language, and performance is one of its mainstays, however you dont feel you will spend much time optimising it?
I started my career working with C++ so I am not new to the language, but my work used very little of even the standard library let alone other third party tools. I used in house libraries that were already written. I was also a novice at the time, so a good deal of the last few months has been spent reading material like Effective Modern C++ and others in the Effective C++ series, along with a throwaway project to practice while reading.
I am a firm believer that most performance is in the algorithms not the language, so I am definitely not choosing C++ primarily for performance reasons. I need certain aspects like memory management, but my choice is not because I think my algorithms will run faster in C++ vs Java. There will probably be some very important modules I need to optimize, but all of that will likely be long after I have a working prototype.
I had a project a year ago where tokenizing terms needed to be as fast as possible, so I tried creating a C library to do it. I am confident I did it well by not copying memory but just keeping track of the location and length of each word in the existing character array, but I still couldn't match the performance of just doing it simply in LINQ (although it was almost identical performance). There is likely some kind of CPU caching or other tricks I was not doing right, but my point is I understand moving to C++ is not some silver bullet for performance, which is what I meant when I said I wasn't moving to C++ for performance reasons.
If you cannot look quite quickly over the descriptions of Boost/ASIO and see what they do (and dont) bring to the table, then you will be fighting a very
I can and have read up on Boost::Asio and a little on QT, which is why I know how they would be useful to me in this project. But I am looking for advice from people who have used them extensively and know the gotchas. In my experience it takes a couple years to really know how certain aspects of a framework will affect your project long term and I want to gleam as much insight from the community as possible before I start down a certain path. It may not be possible to learn anything substantial with one Ask Slashdot post, but I figured why not try.
As almost everything else has equal or better cross platform support, it seems to me like you need to look more closely to what you mean/need by
'granularity' and perhaps change your mentality using familiar languages, and the solutions for problems in those areas.
Okay, basically I need to be able to allocate and release memory manually and without waiting for any garbage collection. I need complete control over concurrency and memory sharing, and as little overhead as possible when accessing the hard disk. I have not been able to find a way during prototyping to control memory enough in Java or C#. A language with a great cross platform library but no memory management would be perfect, and right now C++ is the only language I know of that comes close to those requirements.