Welcome to the Linux Foundation Forum!
Haskell vs. C++
sven.hakonsson
Posts: 8
I have been learning C++, and I now know much of the general syntax. Right now, I am concentrating on learning more of the Standard Template Library. However, I have also learned a bit of Haskell, not nearly as much, and I am interested by it.
So, my question is, what are the basic performance differences that I would generally see if I used Haskell instead of C++, in regards to memory and speed?
0
Comments
-
http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=gpp&lang2=ghc&box=1
According to those benchmarks, C++ is up to 5 times faster, and uses as little as quarter of the memory compared to Haskell.0 -
Thanks. So the primary benefit to Haskell is in source code and structure.... I'll keep that in mind.0
-
"a horrible comparison"
that is absolutely right. no way to compare them.0 -
Ormaaj wrote:
"Notable exceptions" are irrelevant. He is talking about basic performance differences generally observable between the two languages, not specific performance differences in specialised problem domains.That is a horrible comparison. It really depends upon how the code is written. Highly optimized C will have a tendency to be faster than GHC, but there are many notable exceptions. Compilers for functional languages have been really pushing ahead as far as automatic code optimization.
Haskell is a niche language, not a general purpose language. It is also an interpreted language, which are generally much slower than compiled languages. Again, exceptions need not apply. We're talking about general performance characteristics.
The benchmark I linked to is not authoritative. But I do not know of any other cross-language benchmark which uses: open-source compilers and interpreters, transparent testing methods and algorithms, well-known algorithms, and algorithms that are fully language-agnostic. For the purposes of basic, generalised performance comparisons between languages, it is a reasonably good benchmark. If a user wants to compare performance differences within a specific problem domain, they'll need to perform benchmark tests themselves.0 -
> depends upon how the code is written
Then look at how the code is written!
The full source code, compile options and output is shown for all the programs.0 -
Is there no way to compare "apples" to "oranges'?0
-
> Haskell is a niche language, not a general purpose language. It is also an interpreted language...
GHC is a Haskell compiler.
You can see the compilation command and options in each programs "build & benchmark results" log, for example - http://shootout.alioth.debian.org/u32q/benchmark.php?test=spectralnorm&lang=ghc&id=1#log.
Here's a C interpreter - http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=cint - does that make C an interpreted language?0 -
The hugely important distinctions are not in some performance benchmarks, but in the fact that Haskell is a pure-functional language, which makes it in general behave and feel much more different than your typical run of the mill imperative OOP language.
It makes you think rather differently about your solutions (not "how", but "what"), and I would suggest that a lot of functional-style solutions to problems are actually quite enlightening. In addition pure-functionality has important theoretical properties that make it much more amenable to something like data-parallelism due to lack of side-effects, for example...0
Categories
- All Categories
- 175 LFX Mentorship
- 175 LFX Mentorship: Linux Kernel
- 745 Linux Foundation IT Professional Programs
- 372 Cloud Engineer IT Professional Program
- 168 Advanced Cloud Engineer IT Professional Program
- 73 DevOps IT Professional Program - Discontinued
- 3 DevOps & GitOps IT Professional Program
- 98 Cloud Native Developer IT Professional Program
- 7.6K Training Courses & Learning Paths
- AI & ML Training
- Blockchain & Decentralized Identity Training
- 1 Cloud & Containers Training
- Cybersecurity Training
- DevOps & Site-Reliability Training
- Linux Kernel Development Training
- Networking Training
- Open Source Best Practice Training
- System Administration Training
- System Engineering Training
- Web & Application Development Training
- 2 LFD103-JP クラス フォーラム
- 4 LFD210-CN Class Forum
- 764 LFD259 Class Forum
- 681 LFS101 Class Forum
- 2 LFS158-JP クラス フォーラム
- 162 LFS207 Class Forum
- 3 LFS207-DE-Klassenforum
- 4 LFS207-JP クラス フォーラム
- 61 LFS241 Class Forum
- 52 LFS242 Class Forum
- 42 LFS243 Class Forum
- 19 LFS244 Class Forum
- 4 LFS250-JP クラス フォーラム
- 166 LFS253 Class Forum
- 1.4K LFS258 Class Forum
- 792 Hardware
- 202 Drivers
- 68 I/O Devices
- 37 Monitors
- 95 Multimedia
- 173 Networking
- 91 Printers & Scanners
- 87 Storage
- 768 Linux Distributions
- 81 Debian
- 67 Fedora
- 22 Linux Mint
- 13 Mageia
- 24 openSUSE
- 150 Red Hat Enterprise
- 31 Slackware
- 13 SUSE Enterprise
- 356 Ubuntu
- 465 Linux System Administration
- 31 Cloud Computing
- 73 Command Line/Scripting
- Github systems admin projects
- 98 Linux Security
- 78 Network Management
- 101 System Management
- 46 Web Management
- 106 Mobile Computing
- 18 Android
- 73 Development
- 1.2K New to Linux
- 1K Getting Started with Linux
- 392 Off Topic
- 121 Introductions
- 181 Small Talk
- 29 Study Material
- 946 Programming and Development
- 310 Kernel Development
- 618 Software Development
- 979 Software
- 371 Applications
- 182 Command Line
- 5 Compiling/Installing
- 68 Games
- 317 Installation
- Archived
- 2 LFD140 Class Forum
Upcoming Training
-
August 20, 2018
Kubernetes Administration (LFS458)
-
August 20, 2018
Linux System Administration (LFS301)
-
August 27, 2018
Open Source Virtualization (LFS462)
-
August 27, 2018
Linux Kernel Debugging and Security (LFD440)