Live data from Hacker News

Building a website with C++ (CppCMS)

kukuruku.co

11–19 of 19 posts

Re: Building a website with C++ (CppCMS)

#12

It seems (to me) like if statically typed, compiled languages are your bag, and you want to create web applications, Go is the right choice. I recently finished the MVP for a weekend side project in Go, and I had a lot of fun (coming from a Node.js/Ruby background). I finally understood the draw of static typing (the compiler saved me a ton of time), but I didn't feel limited by the type system, nor encumbered by the…

> (not even optimized, and it still made the equivalent Node implementation's performance look mediocre by comparison)

You're probably not doing it right. You should see a factor 10 or more difference, without optimization. Why ? Because any variable lookup in a dynamic language is always at least O(log N), and the mere fact that it needs looking up at all costs you a lot. So every single statement and expression of a compiled language is going to blow the socks off any interpreted language.

Re: Building a website with C++ (CppCMS)

#13
post #3

Surely, in 2014 we can do better than CppCMS... srv.applications_pool().mount(cppcms::applications_factory ()); Not doing us any favours there, at all. C++ is crying out for a bit of 'hip' and there's really no reason, with C++11 now pretty ubiquitous, we can't have some Sinatra-inspired frameworks. What is it that really holds C++ back from being a solid choice for web frameworks?

> C++ is crying out for a bit of 'hip' It is? > What is it that really holds C++ back from being a solid choice for web frameworks? Language wise? Not much. It's more of a library and culture "problem". There's no inherent reason why C++ can't be used for web frameworks.

C++ would be an absolutely fantastic language if it were allowed to start from scratch library-wise.

But that'll never happen.

Re: Building a website with C++ (CppCMS)

#14
post #12

It seems (to me) like if statically typed, compiled languages are your bag, and you want to create web applications, Go is the right choice. I recently finished the MVP for a weekend side project in Go, and I had a lot of fun (coming from a Node.js/Ruby background). I finally understood the draw of static typing (the compiler saved me a ton of time), but I didn't feel limited by the type system, nor encumbered by the…

> (not even optimized, and it still made the equivalent Node implementation's performance look mediocre by comparison) You're probably not doing it right. You should see a factor 10 or more difference, without optimization. Why ? Because any variable lookup in a dynamic language is always at least O(log N), and the mere fact that it needs looking up at all costs you a lot. So every single statement and expression of…

I'm not a fan of dynamic typing, nor am I a compiler expert, but I'm pretty sure this is wrong for (at least) JS engines, which are JIT-compiled down to static machine code and which use automatic type deduction. Only when types on existing variables change all the time it would be a performance problem. If JS code is 10x slower then it's native equivalent it's probably because some slow-path is hit (too many objects created and destroyed, burdening the garbage collector, or too "dynamic code" which causes many recompiles at runtime, or code not to be compiled at all but running through the interpreter..).

Re: Building a website with C++ (CppCMS)

#15
post #13

Earlier quoted context omitted.

> C++ is crying out for a bit of 'hip' It is? > What is it that really holds C++ back from being a solid choice for web frameworks? Language wise? Not much. It's more of a library and culture "problem". There's no inherent reason why C++ can't be used for web frameworks.

C++ would be an absolutely fantastic language if it were allowed to start from scratch library-wise. But that'll never happen.

This is so true. The C++ stdlib has a few nice things (esp in C++11), but the most important part - the container classes - mostly suck (IMHO).

Re: Building a website with C++ (CppCMS)

#16
post #9

It seems (to me) like if statically typed, compiled languages are your bag, and you want to create web applications, Go is the right choice. I recently finished the MVP for a weekend side project in Go, and I had a lot of fun (coming from a Node.js/Ruby background). I finally understood the draw of static typing (the compiler saved me a ton of time), but I didn't feel limited by the type system, nor encumbered by the…

Why Go and not Haskell?

I don't know much about Haskell but I suppose it would work as well. I just took an example of a statically typed, compiled language with which I'm familiar and which seems to have a decent amount of momentum.

Re: Building a website with C++ (CppCMS)

#17
post #12

It seems (to me) like if statically typed, compiled languages are your bag, and you want to create web applications, Go is the right choice. I recently finished the MVP for a weekend side project in Go, and I had a lot of fun (coming from a Node.js/Ruby background). I finally understood the draw of static typing (the compiler saved me a ton of time), but I didn't feel limited by the type system, nor encumbered by the…

> (not even optimized, and it still made the equivalent Node implementation's performance look mediocre by comparison) You're probably not doing it right. You should see a factor 10 or more difference, without optimization. Why ? Because any variable lookup in a dynamic language is always at least O(log N), and the mere fact that it needs looking up at all costs you a lot. So every single statement and expression of…

Are you saying I should have seen more of a difference than I actually did? Maybe I was doing it wrong, but I said it makes Node's performance look "mediocre" rather than "bad" because Node is still pretty damn fast compared to the rest of the field (also, I like Node.js a lot and use it daily).

Also, this was by no means a scientific benchmark - it wasn't a comparison of raw ops/sec, or anything like that: just the requests/sec on a few different routes (pretty close as far as implementation logic). I'm sure the chosen frameworks played into the results as well, but I'd consider that a more pragmatic benchmark anyways.

Re: Building a website with C++ (CppCMS)

#18
post #10

A friend of mine is recently writing C++ web framework similar to Python Flask. It has many interesting features like compile-time routing URL parameter checking, easy and fast (probably fastest among C++ json libs) json implementation by taking full advantage of C++11. If interested, take look of following code and repository: https://github.com/ipkn/crow/blob/master/example.cpp

This actually looks pretty awesome :)

Re: Building a website with C++ (CppCMS)

#19
post #12

Earlier quoted context omitted.

> (not even optimized, and it still made the equivalent Node implementation's performance look mediocre by comparison) You're probably not doing it right. You should see a factor 10 or more difference, without optimization. Why ? Because any variable lookup in a dynamic language is always at least O(log N), and the mere fact that it needs looking up at all costs you a lot. So every single statement and expression of…

Are you saying I should have seen more of a difference than I actually did? Maybe I was doing it wrong, but I said it makes Node's performance look "mediocre" rather than "bad" because Node is still pretty damn fast compared to the rest of the field (also, I like Node.js a lot and use it daily). Also, this was by no means a scientific benchmark - it wasn't a comparison of raw ops/sec, or anything like that: just the…

This is the sort of improvement you'd see if your program was fully IO bound.
Post reply on HN