Wpis z mikrobloga

Potrzebuję napisać backend aplikacji (klient będzie mobilny i webowy), który będzie wykonywał częste złożone obliczenia liczenia dystansu. Zastanawiam się nad wyborem języka. To powinno być coś co poradzi sobie z obsługą API i jednocześnie z obliczeniami (wydajnie).

Mam doświadczenie w NodeJS, Javie, C# oraz mniejsze (znacznie) w C++, Scala i OCaml.
Natomiast przeglądając fora i analizując dostępne rozwiązania zastanawiam się nad Go i Scala.

Co myślicie mirki? Może jakieś inne propozycje?

#programowanie #webdev #scala #golang #pytanie
Pobierz kary_koniu - Potrzebuję napisać backend aplikacji (klient będzie mobilny i webowy), k...
źródło: comment_HubaXBsCo5UwrK8ENE89QaEldZ53MFDH.jpg

Jaki język wybrać?

  • Go 42.6% (23)
  • Scala 37.0% (20)
  • Coś innego... (napisz w komentarzu) 20.4% (11)

Oddanych głosów: 54

  • 16
@kisi3l:
No może nie będą złożone jakoś bardzo, wyrażenia typu:


czyli pierwiastki i f. trygonometryczne. Problem w tym, że wywołań takiego wyrażenia będzie bardzo dużo, non stop.
@Ginden: Wszystko zależy od ilości użytkowników. Mając N użytkowników potrzebuję ustalić odległość pomiędzy x, a n, gdzie n należy do N. Załóżmy na potrzeby testów, że jest to liczba z zakresu <1000; 10 000> na sekundę (w zależności od aktualnego obciążenia)
@kary_koniu: Wygenerowanie 4 liczb pseudolosowych, wykonanie Twojego równania i wstawienie wyniku do tablicy może zostać wykonane u mnie na komputerze na jednym wątku w JavaScripcie 200 000 razy na sekundę.

Powinienem więc zadać pytanie nie - "tysięcy", tylko "ile setek tysięcy".
Mając N użytkowników potrzebuję ustalić odległość pomiędzy x, a n, gdzie n należy do N. Załóżmy na potrzeby testów, że jest to liczba z zakresu <1000; 10 000> na sekundę (w zależności od aktualnego obciążenia)

@kary_koniu: Ale pisz po ludzku. Nie można ustalać odległości między punktem, a zbiorem. :P
Masz N punktów i chcesz policzyć odległość każdego z nich od jakiegoś centralnego punktu, tak?
@Ginden: Mhm, dokładnie.

Wygenerowanie 4 liczb pseudolosowych, wykonanie Twojego równania i wstawienie wyniku do tablicy może zostać wykonane u mnie na komputerze na jednym wątku w JavaScripcie 200 000 razy na sekundę.


Czego użyłeś do przetestowania tego?
@kary_koniu: Przeglądarki, F12, console.time('a'); for(var i=0;i<200000;i++){ kod pętli} console.timeEnd('a')
Jak liczysz wobec centralnego punktu to nie ma potrzeby się martwić - cache na wartości funkcji trygonometrycznych dla danego punktu, potem całość upraszcza się do trzech funkcji trygonometrycznych na użytkownika.
Jak nie wymagasz dużej dokładności to O(1) można uzyskać przez wygenerowanie tablicy lookup, ale to pewnie wymaga mierzenia z cache.
@kary_koniu: ja najpierw wybieram innych co są nie dalej niż bodaj 0.3 współrzędnych usera potem dopiero liczę odległość do tych co zostają. Nie ma sensu wybierac z bazy i liczyć dla tych których i tak nie pokaże bo są za daleko.