Difference between revisions of "Programming performance"

From HaskellWiki
Jump to navigation Jump to search
(Add results)
m (Added suggestion to relocate this and related pages)
 
(14 intermediate revisions by 12 users not shown)
Line 1: Line 1:
  +
<!-- atravers: Perhaps a better place for this would be The Great Code Shootout...? -->
 
[[Category:Code]]
 
[[Category:Code]]
   
Line 7: Line 8:
 
== Submitted results ==
 
== Submitted results ==
   
  +
{| border="1" cellspacing="0" cellpadding="5" align="center"
* [[Programming performance/TimN Haskell]]
 
  +
! Data
* [[Programming performance/TimN Python]]
 
  +
! Language
* [[Programming performance/Magnus Haskell]]
 
  +
! Experience
* [[Programming performance/kc5tja Forth]]
 
  +
! Time
* [[Programming performance/Apter K]] (added by kc5tja)
 
  +
|-
* [[Programming performance/hay.steve Python]]
 
* [[Programming performance/JasonWoof Ruby]]
+
| [[Programming performance/TimN Haskell]]
  +
| Haskell
* [[Programming performance/RaymondH Python]]
 
  +
| Intermediate
 
  +
| 45min?
 
  +
|-
  +
| [[Programming performance/TimN Python]]
  +
| Python
  +
| Advanced
  +
| 30min?
  +
|-
  +
| [[Programming performance/Magnus Haskell]]
  +
| Haskell
  +
| Intermediate
  +
| 25min
  +
|-
  +
| [[Programming performance/kc5tja Forth]]
  +
| Forth
  +
| Advanced
  +
| 3.7hr
  +
|-
  +
| [[Programming performance/Apter K]] (added by kc5tja)
  +
| K
  +
| Advanced
  +
| 15min?
  +
|-
  +
| [[Programming performance/hay.steve Python]]
  +
| Python
  +
| Beginner
  +
| 1.5hr
  +
|-
  +
| [[Programming performance/JasonWoof Ruby]]
  +
| Ruby
  +
| Beginner
  +
| 50 minutes
  +
|-
  +
| [[Programming performance/RaymondH Python]]
  +
| Python
  +
| Advanced
  +
| 20-25 minutes
  +
|-
  +
| [[Programming performance/ArthurVanLeeuwen Haskell]]
  +
| Haskell
  +
| Advanced
  +
|25 minutes
  +
|-
  +
| [[Programming performance/JasonWoof gforth]]
  +
| gforth
  +
| Experienced
  +
|102 minutes
  +
|-
  +
| [[Programming performance/ScottN MySQL]]
  +
| MySQL
  +
| Advanced
  +
|23 minutes
  +
|-
  +
| [[Programming performance/JN K]]
  +
| K
  +
| Intermediate
  +
|17 minutes
  +
|-
  +
| [[Programming performance/JCAB Haskell]]
  +
| Haskell
  +
| Intermediate
  +
|50 minutes
  +
|-
  +
| [[Programming performance/JCAB Cpp]]
  +
| C++
  +
| Advanced
  +
|20 minutes
  +
|-
  +
| [[Programming performance/KrassiVanguelov R]]
  +
| R
  +
| Advanced
  +
|22 minutes
  +
|-
  +
| [[Programming performance/Christoph Haskell]]
  +
| Haskell
  +
| Intermediate
  +
|30 minutes
  +
|-
  +
| [[Programming performance/Lemnext Haskell]]
  +
| Haskell
  +
| Intermediate
  +
|20 minutes
  +
|-
  +
| [[Programming performance/Yasuo Common Lisp]]
  +
| Common Lisp
  +
| Intermediate
  +
|2 hr
  +
|}
   
 
== Instructions ==
 
== Instructions ==

Latest revision as of 23:08, 5 April 2021


Goal

The goal is to measure how long it takes to implement solutions to a standard problem in your programming language of choice and to see the various approaches different programmers take when implementing the solution. The goal isn't to finish the problem as quickly as possible but to rather to get some realistic measurements on programming speed and approaches.

Submitted results

Data Language Experience Time
Programming performance/TimN Haskell Haskell Intermediate 45min?
Programming performance/TimN Python Python Advanced 30min?
Programming performance/Magnus Haskell Haskell Intermediate 25min
Programming performance/kc5tja Forth Forth Advanced 3.7hr
Programming performance/Apter K (added by kc5tja) K Advanced 15min?
Programming performance/hay.steve Python Python Beginner 1.5hr
Programming performance/JasonWoof Ruby Ruby Beginner 50 minutes
Programming performance/RaymondH Python Python Advanced 20-25 minutes
Programming performance/ArthurVanLeeuwen Haskell Haskell Advanced 25 minutes
Programming performance/JasonWoof gforth gforth Experienced 102 minutes
Programming performance/ScottN MySQL MySQL Advanced 23 minutes
Programming performance/JN K K Intermediate 17 minutes
Programming performance/JCAB Haskell Haskell Intermediate 50 minutes
Programming performance/JCAB Cpp C++ Advanced 20 minutes
Programming performance/KrassiVanguelov R R Advanced 22 minutes
Programming performance/Christoph Haskell Haskell Intermediate 30 minutes
Programming performance/Lemnext Haskell Haskell Intermediate 20 minutes
Programming performance/Yasuo Common Lisp Common Lisp Intermediate 2 hr

Instructions

Implement a program that computes the solution to the following problem in your language of choice. Measure how long it took you to make your initial implementation. Post the code and the amount of time it took. Please submit only your time and code for your first implementation in a given language. If you have implemented a solution previously in another language please mention that. You may submit further refinements of your solution or new solutions on the same page as your initial submission but the primary goals is to measure your initial solution and the amount of time required. If you wish, you may look at other solutions but it is preferable that you do not.

Submit your entry by creating a wiki page with your code, your time, the language used and a note about how comfortable you are with this language. If you relied on any help, such as reading other solutions, please state what sort of help you made use of. Please make just one page per participant per language. You may include any comments, refinements or alternate programs on this same page.



Problem

Simulate the following strategy on the GSPC data set:

  • Whenever the closing cost is down 3% or more from the previous closing cost, buy shares with 10% of current cash.
  • Whenever the closing cost is up 6% or more from the original purchase price, sell back the full amount of stock purchased at that price.
  • Sell off any remaining assets after the last day.


Run the strategy on the provided data starting with $10,000.00 in cash and no holdings.

  • All purchases are made at the closing cost.
  • Fractional shares may be purchased.
  • Fractional pennies may be used.
  • Do not simulate any trading costs, interest dividends or taxes.
  • Percent change is 100 percent times the change (new price minus old price) divided by the old price.


Data

The http://www.thenewsh.com/gspc.txt file contains the test data. Any lines not starting with a hash sign ("#") contain valid data. Data is in space seperated columns. Each line represents one day's data with most recent date first. The first column contains the date and the last column contains the closing price. The number of columns is always the same.


Results

Display the amount of cash held after executing the strategy. A mode that displays each buy and sell by date is useful, but optional.