Skip to content

Instantly share code, notes, and snippets.

@marcbachmann
Last active August 29, 2015 14:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcbachmann/0f1eb77c5e30f6f21752 to your computer and use it in GitHub Desktop.
Save marcbachmann/0f1eb77c5e30f6f21752 to your computer and use it in GitHub Desktop.
Spellcheck test
# http://jsperf.com/in-vs-hasownproperty-vs-has/2
fs = require('fs')
_ = require('lodash')
async = require('async')
nodehun = require('nodehun')
redis = require("redis")
cache = redis.createClient()
affbuf = fs.readFileSync('/Users/marcbachmann/Desktop/de-NZZ.aff');
dictbuf = fs.readFileSync('/Users/marcbachmann/Desktop/de-NZZ.dic');
console.log('Dictionary loaded')
dict = new nodehun(affbuf,dictbuf)
dictList = fs.readFileSync('/Users/marcbachmann/Desktop/nzzd__.lst', 'utf8').split('\r\n')
dictMap = {}
dictMap[value] = true for value in dictList
console.log('Dictionary initialized')
cachedCheck = (word, callback) ->
cache.get word, (err, correct) ->
return callback(err, correct=='true') if err || correct
check word, (err, correct) ->
cache.set word, correct, (err) ->
callback(err, correct)
check = (word, callback) ->
dict.spellSuggestions word, (noSuggestion, sugg) ->
callback(null, noSuggestion)
hashMapCheck = (word, callback) ->
callback(null, dictMap[word] || false)
words = 'Gemeinsame Information der Absolventen Organisationen der Hochschule Luzern zum Projekt Alumni Hochschule Luzern Gemeinsame Alumni der Hochschule Luzern Einer für alle – die Vorstände der drei Alumnivereine der Hochschule Luzern - die ALUMNI Hochschule Luzern - Wirtschaft, die Absolventen der Fachhochschule Zentralschweiz A-FHZ (Absolventen der Technik und Architektur), Alumni Soziale Arbeit sowie der Förderverein Design & Kunst haben in den letzten Monaten gemeinsam mit der Hochschule Luzern geprüft, ob der Zusammenschluss zu einem Verein sinnvoll und möglich wäre. Auch das Departement Musik, das zwar verschiedene Fördervereine, aber keinen direkten Alumniverein kennt, hat an der Diskussion aktiv teilgenommen. Die Fachhochschule selbst ist im Wandel und in den letzten Jahren zu einer Hochschule zusammengewachsen: Vom Zusammenschluss der einzelnen Teilschulen zu einer Fachhochschule Zentralschweiz, die Einführung von Bachelor- und Masterabschlüssen, der neue Name Hochschule Luzern, departementsübergreifende Kooperationen im Ausbildungs-, Weiterbildungs- und Forschungsbereich – das sind einige Stichworte, welche die Entwicklung prägten. Mit den neuen Rechtsgrundlagen wird die Hochschule Luzern unter eine einheitliche Trägerschaft gestellt. Damit verstärken sich auch die gemeinsamen Interessen, nach innen wie nach aussen. Ein gemeinsamer Alumniverein der Hochschule Luzern bringt dies zum Ausdruck. Das Konzept Der neue Verein soll unter dem Namen Alumni Hochschule Luzern auftreten. Seine Vision ist die Bildung eines Netzwerkes im Umfeld der Fachhochschule Zentralschweiz. Die Ziele des Vereins sollen sein:/sind:  Der Verein stärkt die Verbundenheit der Absolventinnen und Absolventen der Hochschule Luzern zur Hochschule, untereinander, den jetzigen Studierenden und Dozierenden/Mitarbeitenden.  Der Verein fördert die Zusammengehörigkeit der Mitglieder zu ihren Departementen (Technik & Architektur, Wirtschaft, Soziale Arbeit, Design & Kunst, Musik) mit starken Departements - und Themengruppen.  Der Verein fördert die berufliche und persönliche Entwicklung seiner Mitglieder.  Der Verein setzt sich für starke FH-Titel, für eine praxisorientierte Aus- und Weiterbildung sowie die Anerkennung durch das professionelle Umfeld ein.  Der Verein setzt sich für das duale Ausbildungssystem und für eine starke Marke der Hochschule Luzern in der Aus- und Weiterbildung, Forschung und Entwicklung und Dienstleistungen ein. Die Organisation Der gemeinsame Verein ist das Dach. Dieser organisiert gemeinsame Veranstaltungen und ist für die Gesamtkommunikation zuständig. Damit sich die ehemaligen Studierenden aber auch in ihren Departementen und Studienrichtungen wiedererkennen, sollen Departementsgruppen gebildet werden. Die Departementsgruppe ist für die spezifische Kommunikation, die Angebote und die Anlässe zuständig oder führt eigene Projekte durch. Jede/r Ehemalige ist automatisch Mitglied in der jeweiligen Departementsgruppe. Neben den fest verankerten Departementsgruppen können Mitglieder je nach Interessen und Engagement auch Themengruppen gründen, bei denen es um einen interdisziplinären Austausch, aber auch um gemeinsame Freizeit gehen kann. Die Geschäftsstelle Der Verein verfügt über eine professionelle Geschäftsstelle, welche bei der Hochschule Luzern angegliedert ist. Sie unterstützt den Vorstand sowie die Departements- und Themengruppen in administrativen Belangen. Angebote für Mitglieder Die bisherigen Angebote sollen ausgebaut werden. So gehören bei der Alumni Hochschule Luzern ein gemeinsamer „coming-home“-Ball, die Vergünstigungen im Rahmen der FH SCHWEIZ, aber auch gewisse Angebote im Rahmen der Hochschule wie Careers Service, Campus Sport und Kulturangeboten. Fachreferate, Besichtigungen, Projektpräsentationen etc. werden von den Departementsgruppen organisiert. Die Mitgliedschaft Der Verein steht allen Absolventinnen und Absolventen der Hochschule Luzern offen. Diese können aktives Mitglied des Vereins werden. Auch Studierende, Freundinnen und Freunde sowie Gönner der HSLU können eine Passivmitgliedschaft erwerben. FH SCHWEIZ Der Verein wird Mitglied bei der FH SCHWEIZ sein. Die FH SCHWEIZ nimmt die Interessensvertretung in der nationalen Bildungspolitik wahr. Die Finanzierung Der Verein wird durch die Mitgliederbeiträge finanziert, die Hochschule Luzern unterstützt den Verein mit dem Betrieb einer Geschäftsstelle. Weiteres Vorgehen Die Vorstände der Vereine und die Hochschule Luzern werden die Idee des gemeinsamen Alumnivereins der HSLU weiter entwickeln. Es wird sich ein provisorischer Vorstand formieren, der sich aus Delegierten der jetzigen Vereine zusammensetzt und die weiteren Arbeiten in die Hand nimmt. Die Gründung des neuen gemeinsamen Vereins wird auf den Herbst 2012 angestrebt. Luzern, 7. März 2012 Im Namen der Projektgruppe Alumni Hochschule Luzern'
.replace(/["„“!@#$%^&*()_–+=\[{\]};:<>|\-\./?,-]/g, ' ')
.split(' ')
words = _.compact(words)
console.log('Check %s Words', words.length)
tests = [
name: 'Hashmap'
method: hashMapCheck
,
name: 'Cached Hunspell'
method: cachedCheck
,
name: 'Pure Hunspell'
method: check
]
methods = []
_.each tests, (test) ->
methods.push (done) ->
console.log('\n# %s', test.name)
suggestions = 0
t1 = process.hrtime()
async.each words, (string, callback) ->
test.method string, (err, correct) ->
return callback(err) if err || correct
suggestions += 1
callback(null)
, (err, results) ->
diff = process.hrtime(t1)
console.log('%s milliseconds', (diff[0]*1e9+diff[1])/1e6)
console.log('Suggestions for %s Words\n', suggestions)
done(err)
async.series methods, (err) ->
console.log('\n# END\n')
cache.end()
@mheiniger
Copy link

That was fast ;-)

@marcbachmann
Copy link
Author

Dictionary loaded
Dictionary initialized
Check 632 Words

# Hashmap
0.994077 milliseconds
Suggestions for 159 Words


# Cached Hunspell
411.36463 milliseconds
Suggestions for 14 Words


# Pure Hunspell
3448.028498 milliseconds
Suggestions for 14 Words


# END

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment