Compare commits
2 Commits
47a4c95f3e
...
b0bf9100a6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b0bf9100a6 | ||
|
|
3093a09c7c |
75
1brc.go
75
1brc.go
@ -2,12 +2,14 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"hash/fnv"
|
"hash/fnv"
|
||||||
"log"
|
"log"
|
||||||
"math"
|
"math"
|
||||||
"os"
|
"os"
|
||||||
"runtime/pprof"
|
"runtime/pprof"
|
||||||
|
"slices"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
@ -21,7 +23,7 @@ const benchFile = "results.txt"
|
|||||||
|
|
||||||
const profile = false
|
const profile = false
|
||||||
|
|
||||||
var nGoRoutine = 64
|
var nGoRoutine = 128
|
||||||
|
|
||||||
const maxSeekLen = int64(100)
|
const maxSeekLen = int64(100)
|
||||||
|
|
||||||
@ -32,15 +34,17 @@ type partitionRange struct {
|
|||||||
|
|
||||||
type resultSet map[uint64]result
|
type resultSet map[uint64]result
|
||||||
|
|
||||||
type fRS struct {
|
type fastResultSet struct {
|
||||||
v []result
|
v []result
|
||||||
keys []uint64
|
keys []uint64
|
||||||
size int
|
size int
|
||||||
}
|
}
|
||||||
|
|
||||||
func newFRS() *fRS {
|
// this is actually awful. we have ~412 unique keys for our specific data set, and we require f**kin' 100x space because
|
||||||
|
// our fast hash collides like it was designed to, but this one works for
|
||||||
|
func newFRS() *fastResultSet {
|
||||||
const size = 50000
|
const size = 50000
|
||||||
return &fRS{v: make([]result, size), keys: make([]uint64, size)}
|
return &fastResultSet{v: make([]result, size), keys: make([]uint64, size)}
|
||||||
}
|
}
|
||||||
|
|
||||||
type result struct {
|
type result struct {
|
||||||
@ -48,7 +52,8 @@ type result struct {
|
|||||||
count float64
|
count float64
|
||||||
min float64
|
min float64
|
||||||
max float64
|
max float64
|
||||||
rAvg float64
|
sum float64
|
||||||
|
//rAvg float64
|
||||||
}
|
}
|
||||||
|
|
||||||
var count = int64(0)
|
var count = int64(0)
|
||||||
@ -80,7 +85,7 @@ func oneBRC() {
|
|||||||
|
|
||||||
parts := createPartitions(bits, '\n', nGoRoutine)
|
parts := createPartitions(bits, '\n', nGoRoutine)
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
results := make([]*fRS, len(parts))
|
results := make([]*fastResultSet, len(parts))
|
||||||
|
|
||||||
for i, part := range parts {
|
for i, part := range parts {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
@ -142,7 +147,7 @@ func stopProfiling(f *os.File) {
|
|||||||
f.Close()
|
f.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func workerComputePartition(aData []byte, wPart partitionRange, workerNumber int, container []*fRS, wg *sync.WaitGroup) {
|
func workerComputePartition(aData []byte, wPart partitionRange, workerNumber int, container []*fastResultSet, wg *sync.WaitGroup) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
const delimiter = byte(';')
|
const delimiter = byte(';')
|
||||||
|
|
||||||
@ -186,7 +191,8 @@ func workerComputePartition(aData []byte, wPart partitionRange, workerNumber int
|
|||||||
}
|
}
|
||||||
r.count += 1.0
|
r.count += 1.0
|
||||||
|
|
||||||
r.rAvg = ((r.rAvg * (r.count - 1.0)) + temp) / r.count
|
//r.rAvg = ((r.rAvg * (r.count - 1.0)) + temp) / r.count
|
||||||
|
r.sum = r.sum + temp
|
||||||
|
|
||||||
if temp > r.max {
|
if temp > r.max {
|
||||||
r.max = temp
|
r.max = temp
|
||||||
@ -246,14 +252,15 @@ func f2CharToInt(b1 byte, b2 byte) int {
|
|||||||
|
|
||||||
func seekNextNewLine(b []byte, part partitionRange, last int64) int64 {
|
func seekNextNewLine(b []byte, part partitionRange, last int64) int64 {
|
||||||
const step = 8
|
const step = 8
|
||||||
|
|
||||||
for i := last + step; i < part.end; {
|
for i := last + step; i < part.end; {
|
||||||
switch b[i] {
|
switch b[i] {
|
||||||
case '\n':
|
case '\n':
|
||||||
return i + 1
|
return i + 1
|
||||||
case '\r':
|
case '\r':
|
||||||
return i + 2
|
return i + 2
|
||||||
case ';': // this will be minimum [;0.0\r]
|
case '.':
|
||||||
i += 5
|
return i + 4
|
||||||
default:
|
default:
|
||||||
i += 2
|
i += 2
|
||||||
}
|
}
|
||||||
@ -339,7 +346,8 @@ func (r *result) merge(other *result) {
|
|||||||
r.min = other.min
|
r.min = other.min
|
||||||
}
|
}
|
||||||
|
|
||||||
r.rAvg = ((r.rAvg * r.count) + (other.rAvg * other.count)) / (r.count + other.count)
|
//r.rAvg = ((r.rAvg * r.count) + (other.rAvg * other.count)) / (r.count + other.count)
|
||||||
|
r.sum += other.sum
|
||||||
r.count += other.count
|
r.count += other.count
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,7 +364,38 @@ func (rs resultSet) merge(other resultSet) {
|
|||||||
rs[k] = tr
|
rs[k] = tr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
func (rs resultSet) Report() string {
|
||||||
|
bldr := &strings.Builder{}
|
||||||
|
keyHist := make(map[int][]string)
|
||||||
|
for _, v := range rs {
|
||||||
|
name := string(v.name)
|
||||||
|
key := len(name)
|
||||||
|
container, ok := keyHist[key]
|
||||||
|
if !ok {
|
||||||
|
container = []string{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !slices.Contains(container, name) {
|
||||||
|
container = append(container, name)
|
||||||
|
keyHist[key] = container
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
keyList := []int{}
|
||||||
|
|
||||||
|
for k := range keyHist {
|
||||||
|
keyList = append(keyList, k)
|
||||||
|
}
|
||||||
|
|
||||||
|
slices.Sort(keyList)
|
||||||
|
|
||||||
|
for _, key := range keyList {
|
||||||
|
b, _ := json.Marshal(keyHist[key])
|
||||||
|
bldr.WriteString(fmt.Sprintf("[%d]{%s}\n", key, string(b)))
|
||||||
|
}
|
||||||
|
|
||||||
|
return bldr.String()
|
||||||
|
}
|
||||||
func (rs resultSet) String() string {
|
func (rs resultSet) String() string {
|
||||||
keys := make([]string, 0, len(rs))
|
keys := make([]string, 0, len(rs))
|
||||||
|
|
||||||
@ -377,7 +416,7 @@ func (rs resultSet) String() string {
|
|||||||
b.WriteString("=")
|
b.WriteString("=")
|
||||||
b.WriteString(fmt.Sprintf("%.1f", r.min))
|
b.WriteString(fmt.Sprintf("%.1f", r.min))
|
||||||
b.WriteString("/")
|
b.WriteString("/")
|
||||||
b.WriteString(fmt.Sprintf("%.1f", r.rAvg))
|
b.WriteString(fmt.Sprintf("%.1f", r.sum/r.count))
|
||||||
b.WriteString("/")
|
b.WriteString("/")
|
||||||
b.WriteString(fmt.Sprintf("%.1f", r.max))
|
b.WriteString(fmt.Sprintf("%.1f", r.max))
|
||||||
if i < len(keys)-1 {
|
if i < len(keys)-1 {
|
||||||
@ -387,25 +426,23 @@ func (rs resultSet) String() string {
|
|||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *fRS) get(key uint64) (result, bool) {
|
func (f *fastResultSet) get(key uint64) (result, bool) {
|
||||||
p := f.v[f.keyMap(key)]
|
p := f.v[f.keyMap(key)]
|
||||||
return p, p.name != nil
|
return p, p.name != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *fRS) put(key uint64, v result) {
|
func (f *fastResultSet) put(key uint64, v result) {
|
||||||
idx := f.keyMap(key)
|
idx := f.keyMap(key)
|
||||||
f.v[idx] = v
|
f.v[idx] = v
|
||||||
f.keys[idx] = key
|
f.keys[idx] = key
|
||||||
f.size += 1
|
f.size += 1
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *fRS) keyMap(key uint64) uint64 {
|
func (f *fastResultSet) keyMap(key uint64) uint64 {
|
||||||
//a := key & math.MaxUint32
|
|
||||||
//b := (key >> 32) & math.MaxUint32
|
|
||||||
return (key) % uint64(len(f.v))
|
return (key) % uint64(len(f.v))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *fRS) getKeys() []uint64 {
|
func (f *fastResultSet) getKeys() []uint64 {
|
||||||
keys := make([]uint64, 0, f.size)
|
keys := make([]uint64, 0, f.size)
|
||||||
for _, k := range f.keys {
|
for _, k := range f.keys {
|
||||||
if k > 0 {
|
if k > 0 {
|
||||||
@ -415,7 +452,7 @@ func (f *fRS) getKeys() []uint64 {
|
|||||||
return keys
|
return keys
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *fRS) toResultSet() resultSet {
|
func (f *fastResultSet) toResultSet() resultSet {
|
||||||
rs := make(resultSet)
|
rs := make(resultSet)
|
||||||
for _, key := range f.getKeys() {
|
for _, key := range f.getKeys() {
|
||||||
v, _ := f.get(key)
|
v, _ := f.get(key)
|
||||||
|
|||||||
413
results.txt
Executable file
413
results.txt
Executable file
@ -0,0 +1,413 @@
|
|||||||
|
Abha=-29.8/18.0/69.7,
|
||||||
|
Abidjan=-26.4/26.0/78.5,
|
||||||
|
Abéché=-20.8/29.4/77.6,
|
||||||
|
Accra=-29.5/26.4/78.0,
|
||||||
|
Addis Ababa=-35.0/16.0/63.4,
|
||||||
|
Adelaide=-35.7/17.3/69.2,
|
||||||
|
Aden=-19.4/29.1/77.5,
|
||||||
|
Ahvaz=-27.1/25.4/73.8,
|
||||||
|
Albuquerque=-36.6/14.0/66.0,
|
||||||
|
Alexandra=-43.1/11.0/61.8,
|
||||||
|
Alexandria=-33.3/20.0/69.9,
|
||||||
|
Algiers=-28.7/18.2/66.2,
|
||||||
|
Alice Springs=-34.5/21.0/74.5,
|
||||||
|
Almaty=-43.7/10.0/59.1,
|
||||||
|
Amsterdam=-42.3/10.2/64.7,
|
||||||
|
Anadyr=-56.1/-6.9/42.9,
|
||||||
|
Anchorage=-46.3/2.8/51.9,
|
||||||
|
Andorra la Vella=-42.1/9.8/61.1,
|
||||||
|
Ankara=-39.8/12.0/63.2,
|
||||||
|
Antananarivo=-35.1/17.9/64.9,
|
||||||
|
Antsiranana=-26.4/25.2/73.2,
|
||||||
|
Arkhangelsk=-45.7/1.3/51.5,
|
||||||
|
Ashgabat=-32.0/17.1/63.2,
|
||||||
|
Asmara=-35.6/15.6/66.3,
|
||||||
|
Assab=-22.4/30.5/82.3,
|
||||||
|
Astana=-48.1/3.5/57.7,
|
||||||
|
Athens=-30.4/19.2/68.6,
|
||||||
|
Atlanta=-36.9/17.0/72.6,
|
||||||
|
Auckland=-33.3/15.2/67.3,
|
||||||
|
Austin=-30.0/20.7/70.0,
|
||||||
|
Baghdad=-27.9/22.8/71.9,
|
||||||
|
Baguio=-30.6/19.5/71.2,
|
||||||
|
Baku=-31.8/15.1/66.3,
|
||||||
|
Baltimore=-35.7/13.1/61.4,
|
||||||
|
Bamako=-19.8/27.8/75.8,
|
||||||
|
Bangkok=-21.4/28.6/82.9,
|
||||||
|
Bangui=-23.1/26.0/80.5,
|
||||||
|
Banjul=-24.1/26.0/74.1,
|
||||||
|
Barcelona=-42.6/18.2/67.3,
|
||||||
|
Bata=-23.3/25.1/73.2,
|
||||||
|
Batumi=-37.5/14.0/61.7,
|
||||||
|
Beijing=-36.3/12.9/67.3,
|
||||||
|
Beirut=-31.4/20.9/72.3,
|
||||||
|
Belgrade=-35.0/12.5/68.4,
|
||||||
|
Belize City=-20.8/26.7/77.6,
|
||||||
|
Benghazi=-30.7/19.9/67.8,
|
||||||
|
Bergen=-41.5/7.7/59.1,
|
||||||
|
Berlin=-43.9/10.3/57.9,
|
||||||
|
Bilbao=-33.4/14.7/65.3,
|
||||||
|
Birao=-20.7/26.5/78.8,
|
||||||
|
Bishkek=-36.8/11.3/58.9,
|
||||||
|
Bissau=-19.8/27.0/80.1,
|
||||||
|
Blantyre=-26.5/22.2/72.2,
|
||||||
|
Bloemfontein=-34.3/15.6/64.4,
|
||||||
|
Boise=-38.9/11.4/61.8,
|
||||||
|
Bordeaux=-33.9/14.2/64.7,
|
||||||
|
Bosaso=-18.1/30.0/80.7,
|
||||||
|
Boston=-38.9/10.9/57.8,
|
||||||
|
Bouaké=-24.1/26.0/76.8,
|
||||||
|
Bratislava=-46.6/10.5/58.4,
|
||||||
|
Brazzaville=-23.9/25.0/73.9,
|
||||||
|
Bridgetown=-21.9/27.0/76.5,
|
||||||
|
Brisbane=-32.1/21.4/69.3,
|
||||||
|
Brussels=-38.7/10.5/58.1,
|
||||||
|
Bucharest=-43.4/10.8/66.2,
|
||||||
|
Budapest=-38.5/11.3/61.0,
|
||||||
|
Bujumbura=-25.9/23.8/73.0,
|
||||||
|
Bulawayo=-29.4/18.9/76.0,
|
||||||
|
Burnie=-36.0/13.1/64.3,
|
||||||
|
Busan=-34.1/15.0/64.5,
|
||||||
|
Cabo San Lucas=-28.1/23.9/73.5,
|
||||||
|
Cairns=-29.8/25.0/73.7,
|
||||||
|
Cairo=-28.8/21.4/69.1,
|
||||||
|
Calgary=-48.4/4.4/53.1,
|
||||||
|
Canberra=-40.1/13.1/62.6,
|
||||||
|
Cape Town=-39.4/16.2/64.8,
|
||||||
|
Changsha=-35.1/17.4/69.2,
|
||||||
|
Charlotte=-30.7/16.1/68.8,
|
||||||
|
Chiang Mai=-25.3/25.8/75.2,
|
||||||
|
Chicago=-39.5/9.8/62.0,
|
||||||
|
Chihuahua=-34.9/18.6/66.6,
|
||||||
|
Chittagong=-22.9/25.9/76.9,
|
||||||
|
Chișinău=-41.2/10.2/59.0,
|
||||||
|
Chongqing=-29.5/18.6/67.4,
|
||||||
|
Christchurch=-39.7/12.2/64.7,
|
||||||
|
City of San Marino=-38.6/11.8/59.6,
|
||||||
|
Colombo=-23.5/27.4/78.9,
|
||||||
|
Columbus=-36.0/11.7/61.6,
|
||||||
|
Conakry=-29.9/26.4/73.0,
|
||||||
|
Copenhagen=-41.2/9.1/60.1,
|
||||||
|
Cotonou=-19.5/27.2/74.9,
|
||||||
|
Cracow=-38.0/9.3/57.2,
|
||||||
|
Da Lat=-29.8/17.9/64.8,
|
||||||
|
Da Nang=-24.7/25.8/75.5,
|
||||||
|
Dakar=-27.7/24.0/76.2,
|
||||||
|
Dallas=-32.6/19.0/73.3,
|
||||||
|
Damascus=-31.0/17.0/67.0,
|
||||||
|
Dampier=-28.2/26.4/76.2,
|
||||||
|
Dar es Salaam=-24.7/25.8/80.0,
|
||||||
|
Darwin=-27.9/27.6/77.3,
|
||||||
|
Denpasar=-29.5/23.7/72.6,
|
||||||
|
Denver=-40.8/10.4/60.1,
|
||||||
|
Detroit=-41.9/10.0/62.6,
|
||||||
|
Dhaka=-25.0/25.9/76.1,
|
||||||
|
Dikson=-58.2/-11.1/39.1,
|
||||||
|
Dili=-21.2/26.6/75.3,
|
||||||
|
Djibouti=-19.5/29.9/80.7,
|
||||||
|
Dodoma=-31.9/22.7/72.6,
|
||||||
|
Dolisie=-27.5/24.0/75.1,
|
||||||
|
Douala=-27.5/26.7/76.0,
|
||||||
|
Dubai=-22.1/26.9/76.9,
|
||||||
|
Dublin=-37.1/9.8/60.8,
|
||||||
|
Dunedin=-38.5/11.1/63.4,
|
||||||
|
Durban=-31.9/20.6/68.8,
|
||||||
|
Dushanbe=-31.5/14.7/66.3,
|
||||||
|
Edinburgh=-40.5/9.3/60.9,
|
||||||
|
Edmonton=-47.7/4.2/53.5,
|
||||||
|
El Paso=-32.2/18.1/65.2,
|
||||||
|
Entebbe=-35.3/21.0/70.6,
|
||||||
|
Erbil=-31.5/19.5/73.8,
|
||||||
|
Erzurum=-43.1/5.1/53.7,
|
||||||
|
Fairbanks=-49.4/-2.3/48.3,
|
||||||
|
Fianarantsoa=-32.6/17.9/64.7,
|
||||||
|
Flores, Petén=-23.2/26.4/76.4,
|
||||||
|
Frankfurt=-40.2/10.6/60.3,
|
||||||
|
Fresno=-39.1/17.9/68.3,
|
||||||
|
Fukuoka=-31.2/17.0/68.8,
|
||||||
|
Gaborone=-29.1/21.0/70.6,
|
||||||
|
Gabès=-28.6/19.5/68.1,
|
||||||
|
Gagnoa=-25.2/26.0/79.0,
|
||||||
|
Gangtok=-34.3/15.2/67.2,
|
||||||
|
Garissa=-19.9/29.3/76.3,
|
||||||
|
Garoua=-21.1/28.3/78.2,
|
||||||
|
George Town=-19.6/27.9/79.8,
|
||||||
|
Ghanzi=-26.0/21.4/71.6,
|
||||||
|
Gjoa Haven=-65.5/-14.4/36.9,
|
||||||
|
Guadalajara=-29.4/20.9/72.9,
|
||||||
|
Guangzhou=-26.8/22.4/72.7,
|
||||||
|
Guatemala City=-29.0/20.4/69.1,
|
||||||
|
Halifax=-40.4/7.5/57.3,
|
||||||
|
Hamburg=-39.3/9.7/56.2,
|
||||||
|
Hamilton=-37.4/13.8/66.4,
|
||||||
|
Hanga Roa=-34.4/20.5/67.9,
|
||||||
|
Hanoi=-22.8/23.6/73.3,
|
||||||
|
Harare=-31.1/18.4/69.0,
|
||||||
|
Harbin=-44.3/5.0/56.6,
|
||||||
|
Hargeisa=-26.8/21.7/71.2,
|
||||||
|
Hat Yai=-24.0/27.0/77.2,
|
||||||
|
Havana=-30.2/25.2/78.2,
|
||||||
|
Helsinki=-45.9/5.9/53.1,
|
||||||
|
Heraklion=-32.2/18.9/68.6,
|
||||||
|
Hiroshima=-31.5/16.3/71.3,
|
||||||
|
Ho Chi Minh City=-24.0/27.4/76.7,
|
||||||
|
Hobart=-43.0/12.7/61.7,
|
||||||
|
Hong Kong=-27.0/23.3/72.8,
|
||||||
|
Honiara=-26.1/26.5/75.6,
|
||||||
|
Honolulu=-27.1/25.4/72.8,
|
||||||
|
Houston=-26.1/20.8/73.7,
|
||||||
|
Ifrane=-36.0/11.4/58.4,
|
||||||
|
Indianapolis=-40.7/11.8/59.8,
|
||||||
|
Iqaluit=-59.5/-9.3/42.5,
|
||||||
|
Irkutsk=-51.1/1.0/51.9,
|
||||||
|
Istanbul=-38.2/13.9/61.5,
|
||||||
|
Jacksonville=-26.9/20.3/70.0,
|
||||||
|
Jakarta=-26.8/26.7/76.9,
|
||||||
|
Jayapura=-23.3/27.0/77.6,
|
||||||
|
Jerusalem=-30.9/18.3/71.8,
|
||||||
|
Johannesburg=-35.0/15.5/66.2,
|
||||||
|
Jos=-27.5/22.8/69.6,
|
||||||
|
Juba=-19.9/27.8/76.5,
|
||||||
|
Kabul=-36.3/12.1/62.9,
|
||||||
|
Kampala=-32.6/20.0/70.4,
|
||||||
|
Kandi=-23.3/27.7/82.3,
|
||||||
|
Kankan=-24.4/26.5/74.4,
|
||||||
|
Kano=-23.3/26.4/78.9,
|
||||||
|
Kansas City=-35.2/12.5/67.2,
|
||||||
|
Karachi=-22.8/26.0/76.4,
|
||||||
|
Karonga=-23.9/24.4/80.8,
|
||||||
|
Kathmandu=-31.7/18.3/66.0,
|
||||||
|
Khartoum=-20.4/29.9/82.7,
|
||||||
|
Kingston=-21.9/27.4/76.6,
|
||||||
|
Kinshasa=-27.9/25.3/79.2,
|
||||||
|
Kolkata=-20.4/26.7/79.3,
|
||||||
|
Kuala Lumpur=-27.1/27.3/74.7,
|
||||||
|
Kumasi=-25.0/26.0/75.6,
|
||||||
|
Kunming=-31.8/15.7/66.9,
|
||||||
|
Kuopio=-45.6/3.4/53.2,
|
||||||
|
Kuwait City=-22.9/25.7/79.3,
|
||||||
|
Kyiv=-41.5/8.4/58.4,
|
||||||
|
Kyoto=-32.2/15.8/71.8,
|
||||||
|
La Ceiba=-22.2/26.2/76.9,
|
||||||
|
La Paz=-24.7/23.7/74.3,
|
||||||
|
Lagos=-23.1/26.8/75.7,
|
||||||
|
Lahore=-23.5/24.3/73.7,
|
||||||
|
Lake Havasu City=-28.0/23.7/74.9,
|
||||||
|
Lake Tekapo=-39.8/8.7/61.2,
|
||||||
|
Las Palmas de Gran Canaria=-32.1/21.2/69.0,
|
||||||
|
Las Vegas=-31.0/20.3/68.9,
|
||||||
|
Launceston=-36.0/13.1/64.0,
|
||||||
|
Lhasa=-45.7/7.6/56.1,
|
||||||
|
Libreville=-22.9/25.9/74.4,
|
||||||
|
Lisbon=-30.5/17.5/65.3,
|
||||||
|
Livingstone=-26.3/21.8/77.8,
|
||||||
|
Ljubljana=-38.7/10.9/64.0,
|
||||||
|
Lodwar=-20.1/29.3/79.0,
|
||||||
|
Lomé=-21.3/26.9/79.1,
|
||||||
|
London=-34.3/11.3/60.7,
|
||||||
|
Los Angeles=-30.5/18.6/66.9,
|
||||||
|
Louisville=-37.8/13.9/68.8,
|
||||||
|
Luanda=-28.8/25.8/72.3,
|
||||||
|
Lubumbashi=-30.2/20.8/69.3,
|
||||||
|
Lusaka=-36.2/19.9/68.9,
|
||||||
|
Luxembourg City=-45.6/9.3/61.3,
|
||||||
|
Lviv=-41.3/7.8/58.1,
|
||||||
|
Lyon=-37.6/12.5/61.4,
|
||||||
|
Madrid=-34.2/15.0/64.3,
|
||||||
|
Mahajanga=-24.3/26.3/74.7,
|
||||||
|
Makassar=-20.9/26.7/77.9,
|
||||||
|
Makurdi=-24.5/26.0/78.9,
|
||||||
|
Malabo=-22.1/26.3/76.0,
|
||||||
|
Malé=-23.8/28.0/80.8,
|
||||||
|
Managua=-20.9/27.3/78.3,
|
||||||
|
Manama=-22.9/26.5/75.2,
|
||||||
|
Mandalay=-23.3/28.0/77.6,
|
||||||
|
Mango=-22.9/28.1/84.7,
|
||||||
|
Manila=-21.2/28.4/77.6,
|
||||||
|
Maputo=-25.2/22.8/71.2,
|
||||||
|
Marrakesh=-33.8/19.6/67.4,
|
||||||
|
Marseille=-32.5/15.8/63.9,
|
||||||
|
Maun=-29.7/22.4/72.0,
|
||||||
|
Medan=-24.2/26.5/74.1,
|
||||||
|
Mek'ele=-28.6/22.7/70.7,
|
||||||
|
Melbourne=-36.6/15.1/66.5,
|
||||||
|
Memphis=-33.4/17.2/69.1,
|
||||||
|
Mexicali=-29.3/23.1/73.5,
|
||||||
|
Mexico City=-38.4/17.5/67.2,
|
||||||
|
Miami=-24.8/24.9/72.8,
|
||||||
|
Milan=-42.7/13.0/63.1,
|
||||||
|
Milwaukee=-38.9/8.9/57.3,
|
||||||
|
Minneapolis=-42.4/7.8/55.5,
|
||||||
|
Minsk=-43.7/6.7/59.6,
|
||||||
|
Mogadishu=-23.4/27.1/77.9,
|
||||||
|
Mombasa=-22.5/26.3/78.5,
|
||||||
|
Monaco=-33.7/16.4/66.9,
|
||||||
|
Moncton=-43.2/6.1/55.6,
|
||||||
|
Monterrey=-30.1/22.3/72.1,
|
||||||
|
Montreal=-41.2/6.8/64.3,
|
||||||
|
Moscow=-42.6/5.8/54.5,
|
||||||
|
Mumbai=-22.5/27.1/77.7,
|
||||||
|
Murmansk=-47.6/0.6/49.7,
|
||||||
|
Muscat=-21.6/28.0/77.3,
|
||||||
|
Mzuzu=-32.3/17.7/70.3,
|
||||||
|
N'Djamena=-22.9/28.3/79.8,
|
||||||
|
Naha=-27.4/23.1/72.5,
|
||||||
|
Nairobi=-34.1/17.8/69.5,
|
||||||
|
Nakhon Ratchasima=-27.2/27.3/74.7,
|
||||||
|
Napier=-31.4/14.6/63.9,
|
||||||
|
Napoli=-34.6/15.9/63.7,
|
||||||
|
Nashville=-34.0/15.4/65.8,
|
||||||
|
Nassau=-29.4/24.6/76.8,
|
||||||
|
Ndola=-33.5/20.3/69.0,
|
||||||
|
New Delhi=-28.1/25.0/75.6,
|
||||||
|
New Orleans=-28.1/20.7/66.4,
|
||||||
|
New York City=-37.2/12.9/64.4,
|
||||||
|
Ngaoundéré=-28.5/22.0/73.6,
|
||||||
|
Niamey=-17.6/29.3/81.5,
|
||||||
|
Nicosia=-33.6/19.7/77.2,
|
||||||
|
Niigata=-38.7/13.9/62.3,
|
||||||
|
Nouadhibou=-30.3/21.3/72.0,
|
||||||
|
Nouakchott=-23.5/25.7/76.1,
|
||||||
|
Novosibirsk=-48.1/1.7/54.0,
|
||||||
|
Nuuk=-50.5/-1.4/52.1,
|
||||||
|
Odesa=-37.6/10.7/60.1,
|
||||||
|
Odienné=-27.5/26.0/73.9,
|
||||||
|
Oklahoma City=-35.8/15.9/65.4,
|
||||||
|
Omaha=-39.0/10.6/61.4,
|
||||||
|
Oranjestad=-21.9/28.1/79.5,
|
||||||
|
Oslo=-45.4/5.7/53.1,
|
||||||
|
Ottawa=-42.6/6.6/53.1,
|
||||||
|
Ouagadougou=-22.9/28.3/86.3,
|
||||||
|
Ouahigouya=-20.8/28.6/77.1,
|
||||||
|
Ouarzazate=-26.7/18.9/72.0,
|
||||||
|
Oulu=-46.0/2.7/56.3,
|
||||||
|
Palembang=-22.9/27.3/77.4,
|
||||||
|
Palermo=-29.8/18.5/68.9,
|
||||||
|
Palm Springs=-24.5/24.5/71.8,
|
||||||
|
Palmerston North=-37.7/13.2/63.1,
|
||||||
|
Panama City=-21.2/28.0/78.1,
|
||||||
|
Parakou=-23.7/26.8/80.3,
|
||||||
|
Paris=-36.9/12.3/62.2,
|
||||||
|
Perth=-28.3/18.7/68.6,
|
||||||
|
Petropavlovsk-Kamchatsky=-50.7/1.9/51.3,
|
||||||
|
Philadelphia=-40.8/13.2/64.5,
|
||||||
|
Phnom Penh=-19.7/28.3/80.0,
|
||||||
|
Phoenix=-26.4/23.9/76.0,
|
||||||
|
Pittsburgh=-44.1/10.8/61.5,
|
||||||
|
Podgorica=-31.9/15.3/67.9,
|
||||||
|
Pointe-Noire=-22.5/26.1/74.4,
|
||||||
|
Pontianak=-23.7/27.7/75.1,
|
||||||
|
Port Moresby=-21.3/26.9/84.3,
|
||||||
|
Port Sudan=-25.9/28.4/78.0,
|
||||||
|
Port Vila=-26.2/24.3/71.8,
|
||||||
|
Port-Gentil=-25.8/26.0/77.7,
|
||||||
|
Portland (OR)=-37.4/12.4/62.8,
|
||||||
|
Porto=-36.7/15.7/64.7,
|
||||||
|
Prague=-44.2/8.4/60.2,
|
||||||
|
Praia=-25.4/24.4/78.9,
|
||||||
|
Pretoria=-34.1/18.2/70.8,
|
||||||
|
Pyongyang=-37.4/10.8/61.7,
|
||||||
|
Rabat=-34.3/17.2/67.7,
|
||||||
|
Rangpur=-21.5/24.4/71.6,
|
||||||
|
Reggane=-19.4/28.3/77.7,
|
||||||
|
Reykjavík=-43.6/4.3/53.0,
|
||||||
|
Riga=-53.0/6.2/59.3,
|
||||||
|
Riyadh=-24.8/26.0/75.2,
|
||||||
|
Rome=-35.3/15.2/63.0,
|
||||||
|
Roseau=-31.5/26.2/76.1,
|
||||||
|
Rostov-on-Don=-38.6/9.9/58.0,
|
||||||
|
Sacramento=-38.9/16.3/70.7,
|
||||||
|
Saint Petersburg=-44.7/5.8/58.7,
|
||||||
|
Saint-Pierre=-41.5/5.7/57.3,
|
||||||
|
Salt Lake City=-40.3/11.6/57.9,
|
||||||
|
San Antonio=-27.8/20.8/70.8,
|
||||||
|
San Diego=-31.0/17.8/67.2,
|
||||||
|
San Francisco=-35.0/14.6/62.0,
|
||||||
|
San Jose=-33.5/16.4/65.3,
|
||||||
|
San José=-29.6/22.6/71.0,
|
||||||
|
San Juan=-22.4/27.2/74.9,
|
||||||
|
San Salvador=-26.6/23.1/73.0,
|
||||||
|
Sana'a=-31.7/20.0/67.0,
|
||||||
|
Santo Domingo=-21.3/25.9/80.3,
|
||||||
|
Sapporo=-43.8/8.9/58.3,
|
||||||
|
Sarajevo=-42.2/10.1/61.7,
|
||||||
|
Saskatoon=-46.7/3.3/54.6,
|
||||||
|
Seattle=-36.6/11.3/71.2,
|
||||||
|
Seoul=-38.6/12.5/62.5,
|
||||||
|
Seville=-29.5/19.2/66.2,
|
||||||
|
Shanghai=-32.2/16.7/70.2,
|
||||||
|
Singapore=-22.1/27.0/78.1,
|
||||||
|
Skopje=-42.1/12.4/63.6,
|
||||||
|
Sochi=-39.3/14.2/63.7,
|
||||||
|
Sofia=-36.9/10.6/58.7,
|
||||||
|
Sokoto=-25.4/28.0/79.4,
|
||||||
|
Split=-31.1/16.1/65.8,
|
||||||
|
St. John's=-47.4/5.0/58.8,
|
||||||
|
St. Louis=-34.4/13.9/63.4,
|
||||||
|
Stockholm=-41.4/6.6/56.0,
|
||||||
|
Surabaya=-23.0/27.1/79.9,
|
||||||
|
Suva=-23.5/25.6/72.5,
|
||||||
|
Suwałki=-44.1/7.2/57.6,
|
||||||
|
Sydney=-33.8/17.7/64.2,
|
||||||
|
Ségou=-24.0/28.0/78.5,
|
||||||
|
Tabora=-28.0/23.0/72.1,
|
||||||
|
Tabriz=-37.7/12.6/60.7,
|
||||||
|
Taipei=-24.3/23.0/69.8,
|
||||||
|
Tallinn=-42.1/6.4/55.1,
|
||||||
|
Tamale=-23.4/27.9/77.0,
|
||||||
|
Tamanrasset=-26.5/21.7/70.9,
|
||||||
|
Tampa=-32.4/22.9/73.8,
|
||||||
|
Tashkent=-32.0/14.8/62.0,
|
||||||
|
Tauranga=-36.7/14.8/61.3,
|
||||||
|
Tbilisi=-36.0/12.9/68.3,
|
||||||
|
Tegucigalpa=-29.2/21.7/72.5,
|
||||||
|
Tehran=-35.3/17.0/65.4,
|
||||||
|
Tel Aviv=-28.0/20.0/73.0,
|
||||||
|
Thessaloniki=-35.4/16.0/65.8,
|
||||||
|
Thiès=-26.8/24.0/78.5,
|
||||||
|
Tijuana=-34.4/17.8/67.3,
|
||||||
|
Timbuktu=-26.1/28.0/75.4,
|
||||||
|
Tirana=-35.8/15.2/64.3,
|
||||||
|
Toamasina=-24.7/23.4/72.3,
|
||||||
|
Tokyo=-36.8/15.4/70.1,
|
||||||
|
Toliara=-26.4/24.1/72.9,
|
||||||
|
Toluca=-38.7/12.4/62.7,
|
||||||
|
Toronto=-42.2/9.4/58.3,
|
||||||
|
Tripoli=-29.0/20.0/68.3,
|
||||||
|
Tromsø=-46.9/2.9/54.1,
|
||||||
|
Tucson=-30.3/20.9/72.3,
|
||||||
|
Tunis=-40.3/18.4/67.3,
|
||||||
|
Ulaanbaatar=-49.1/-0.4/52.2,
|
||||||
|
Upington=-32.2/20.4/75.6,
|
||||||
|
Vaduz=-38.0/10.1/61.0,
|
||||||
|
Valencia=-31.7/18.3/67.6,
|
||||||
|
Valletta=-29.2/18.8/65.8,
|
||||||
|
Vancouver=-37.4/10.4/57.1,
|
||||||
|
Veracruz=-22.0/25.4/78.9,
|
||||||
|
Vienna=-38.4/10.4/60.1,
|
||||||
|
Vientiane=-23.2/25.9/75.1,
|
||||||
|
Villahermosa=-21.1/27.1/76.0,
|
||||||
|
Vilnius=-43.2/6.0/55.7,
|
||||||
|
Virginia Beach=-34.2/15.8/65.8,
|
||||||
|
Vladivostok=-46.7/4.9/53.2,
|
||||||
|
Warsaw=-46.2/8.5/57.8,
|
||||||
|
Washington, D.C.=-36.0/14.6/64.0,
|
||||||
|
Wau=-22.1/27.8/77.6,
|
||||||
|
Wellington=-36.4/12.9/63.6,
|
||||||
|
Whitehorse=-53.0/-0.1/49.9,
|
||||||
|
Wichita=-40.5/13.9/66.3,
|
||||||
|
Willemstad=-20.8/28.0/74.1,
|
||||||
|
Winnipeg=-47.7/3.0/54.7,
|
||||||
|
Wrocław=-42.9/9.6/57.8,
|
||||||
|
Xi'an=-38.3/14.1/65.8,
|
||||||
|
Yakutsk=-56.4/-8.8/39.9,
|
||||||
|
Yangon=-21.7/27.5/75.3,
|
||||||
|
Yaoundé=-27.9/23.8/71.4,
|
||||||
|
Yellowknife=-56.5/-4.3/52.0,
|
||||||
|
Yerevan=-39.7/12.4/60.2,
|
||||||
|
Yinchuan=-47.2/9.0/62.5,
|
||||||
|
Zagreb=-38.7/10.7/62.7,
|
||||||
|
Zanzibar City=-22.7/26.0/81.5,
|
||||||
|
Zürich=-43.7/9.3/62.4,
|
||||||
|
Ürümqi=-41.1/7.4/59.7,
|
||||||
|
İzmir=-33.2/17.9/66.4
|
||||||
Loading…
Reference in New Issue
Block a user