WebGL Insights — Getting Serious with JavaScript(下)

4.3 性能

写关于 JavaScript 性能的文章是件棘手的事,因为它是一个不断变化的目标。浏览器实现会定期改进,目前运行缓慢的代码可能很快就会被优化。然而,即使在自更新浏览器不断演进的情况下,仍然存在一套通用的最佳实践和禁忌,它们通常适用,并且不太可能发生改变。

继续阅读WebGL Insights — Getting Serious with JavaScript(下)

WebGL Insights — Getting Serious with JavaScript(上)

WebGL相关的书籍并不多,《WebGL Insights》算是一本,其中各个章节都是由行业内资深的开发者们编写的。书中第四章的作者,Matthew Amato 和 Kevin Ring,正好是 Cesium 的联合创始人及资深开发工程师,所以就想着将本章翻译一下,加深一下理解。

4.1 介绍

正如我们将在第七章“Teaching an Introductory Computer Graphics Course with WebGL”中看到的,JavaScript 和 WebGL 的特性使其成为计算机图形学的一个极好的学习平台。其他人也认为,工具链的普遍可访问性和质量使它在图形研究中也具有很大的优势。在本章中,我们将讨论我们认为 JavaScript 和 WebGL 最重要的用途:编写和维护实际的基于浏览器的应用程序和库。

继续阅读WebGL Insights — Getting Serious with JavaScript(上)

探讨空间搜索算法——瞬间搜索数百万个点

在大规模处理和显示空间数据时,没有什么概念比空间索引(Spatial Index)更有用和重要。空间索引是一类算法,它们通过特定的方式组织几何数据,使搜索更加高效。例如,执行以下查询:

  • 返回该区域内的所有建筑
  • 找到距离该点最近的 1000 个加油站

即使面对数百万个对象,空间索引仍然可以在毫秒级的时间内返回结果。空间索引是PostGIS等数据库的基础,而 PostGIS 本身也是大部分GIS平台的核心组件。例如,处理遥测数据:将数百万个 GPS 速度样本与道路网络匹配,从而为导航服务生成实时交通数据。在客户端,常见的应用场景包括实时在地图上放置标签,以及在鼠标悬停时查找地图对象

Mapbox的开发者已经构建了一系列高效的 JavaScript 空间搜索库,包括 rbush、rbush-knn、kdbush、geokdbush。本文接下来将尝试解析这些库的底层工作原理。

继续阅读探讨空间搜索算法——瞬间搜索数百万个点