Skip to content

Commit cb53fa4

Browse files
committed
Fix link to data gen notebook
1 parent b42eeca commit cb53fa4

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

notebooks/Python vs Java.ipynb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"\n",
2222
"This is the story of how our codebase evolved and was optimized, and how it compares with the Java version at different stages of that journey.\n",
2323
"\n",
24-
"To make the comparisons we'll need data on runtimes of both algorithms, ranging over dataset size, and dataset dimension. To save time and space I've done that work in [another notebook](http://nbviewer.jupyter.org/github/lmcinnes/hdbscan/blob/master/notebooks/Performance%20data%20generation.ipynb) and will just load the data in here."
24+
"To make the comparisons we'll need data on runtimes of both algorithms, ranging over dataset size, and dataset dimension. To save time and space I've done that work in [another notebook](http://nbviewer.jupyter.org/github/lmcinnes/hdbscan/blob/master/notebooks/Performance%20data%20generation%20.ipynb) and will just load the data in here."
2525
]
2626
},
2727
{
@@ -468,8 +468,17 @@
468468
"source": [
469469
"## Conclusions\n",
470470
"\n",
471-
"So how did we fare developing a high performance clustering algorithm in python? Python certainly made the development process easy, not just in terms of initial code, but through great libraries, and by making optimization easy. The end result is an implementation several orders of magnitude faster than the current reference implementation in Java. So really, despite expectations, python didn't make things slow; quite the contrary. The lesson here is an old one from Knuth that I'm sure you already knew: *\"premature optimization is root of all evil\"*. Choosing a language \"for performance\" before you even know your algorithm well, and what parts of it will really be bottlenecks is optimizing prematurely. Why not develop in a language that makes the first version easy to implement, and provides plenty of powerful tools for optimization later when you understand where and how you need it? And that's why I use python for high performance scientific computing."
471+
"So how did we fare developing a high performance clustering algorithm in python? Python certainly made the development process easy, not just in terms of initial code, but through great libraries, and by making optimization easy. The end result is an implementation several orders of magnitude faster than the current reference implementation in Java. So really, despite expectations, python didn't make things slow; quite the contrary. The lesson here is an old one from Knuth that I'm sure you already knew: *\"premature optimization is root of all evil\"*. Choosing a language \"for performance\" before you even know your algorithm well, and what parts of it will really be bottlenecks, is optimizing prematurely. Why not develop in a language that makes the first version easy to implement, and provides plenty of powerful tools for optimization later when you understand where and how you need it? And that's why I use python for high performance scientific computing."
472472
]
473+
},
474+
{
475+
"cell_type": "code",
476+
"execution_count": null,
477+
"metadata": {
478+
"collapsed": true
479+
},
480+
"outputs": [],
481+
"source": []
473482
}
474483
],
475484
"metadata": {

0 commit comments

Comments
 (0)