Esta pregunta tiene 6 años, pero extrañamente, ninguna de las respuestas realmente aborda los cuatro puntos (velocidad, memoria, expresividad, portabilidad).
Velocidad
Obviamente, esto depende de la implementación, pero debido a que JSON es tan ampliamente utilizado y tan fácil de implementar, ha tendido a recibir un mayor soporte nativo y, por lo tanto, velocidad. Teniendo en cuenta que YAML hace todo lo que JSON hace, más un camión más, es probable que de cualquier implementación comparable de ambos, el JSON sea más rápido.
Sin embargo, dado que un archivo YAML puede ser un poco más pequeño que su homólogo de JSON (debido al menor número "
y ,
caracteres), es posible que un analizador YAML altamente optimizado podría ser más rápida en circunstancias excepcionales.
Memoria
Básicamente se aplica el mismo argumento. Es difícil ver por qué un analizador YAML alguna vez sería más eficiente en memoria que un analizador JSON, si representan la misma estructura de datos.
Expresividad
Como señalaron otros, los programadores de Python tienden a preferir YAML, los programadores de JavaScript a JSON. Haré estas observaciones:
- Es fácil memorizar toda la sintaxis de JSON y, por lo tanto, tener mucha confianza para comprender el significado de cualquier archivo JSON. YAML no es realmente entendible por ningún humano. El número de sutilezas y casos extremos es extremo.
- Debido a que pocos analizadores implementan la especificación completa, es aún más difícil estar seguro sobre el significado de una expresión dada en un contexto dado.
- La falta de comentarios en JSON es, en la práctica, un verdadero dolor.
Portabilidad
Es difícil imaginar un lenguaje moderno sin una biblioteca JSON. También es difícil imaginar un analizador JSON que implemente algo menos que la especificación completa. YAML tiene un amplio soporte, pero es menos ubicuo que JSON, y cada analizador implementa un subconjunto diferente. Por lo tanto, los archivos YAML son menos interoperables de lo que piensas.
Resumen
JSON es el ganador por el rendimiento (si corresponde) y la interoperabilidad. YAML es mejor para archivos mantenidos por humanos. HJSON es un compromiso decente aunque con una portabilidad muy reducida. JSON5 es un compromiso más razonable, con una sintaxis bien definida.