I have an ArrayList of objects being dumped to a YAML string and have been comparing the performance of JYaml and SnakeYaml in handling this.
    ArrayList<HashMap> testList = new ArrayList<HashMap>();
    HashMap<String, String> testMap1 = new HashMap<String, String>();
    HashMap<String, String> testMap2 = new HashMap<String, String>();
    testMap1.put("1_1", "One");
    testMap1.put("1_2", "Two");
    testMap1.put("1_3", "Three");
    testMap2.put("2_1", "One");
    testMap2.put("2_2", "Two");
    testMap2.put("2_3", "Three");
    testList.add(testMap1);
    testList.add(testMap2);
    System.out.println(jYaml.dump(testList));
    System.out.println(snakeYaml.dump(testList));
The output from JYaml includes the serialised object's class name whereas the output from SnakeYaml does not:
JYaml output:
- !java.util.HashMap
  1_1: One
  1_3: Three
  1_2: Two
- !java.util.HashMap
  2_1: One
  2_2: Two
  2_3: Three
SnakeYaml output:
- {'1_1': One, '1_3': Three, '1_2': Two}
- {'2_1': One, '2_2': Two, '2_3': Three}
I prefer the more 'clean' class name-less output of SnakeYaml as this would be more suitable for a language-neutral environment.
I prefer the speed of JYaml. Serialisation/deserialisation times increase linearly with the amount of data being processed, as opposed to exponentially with SnakeYaml.
I'd like to coerce JYaml into giving me class name-less output but am quite lost as to how this can be achieved.
 
                        
Check the SnakeYAML latest source. It is now possible (same as in JYaml) to ignore implicit typing and always parse scalars as Strings. This is a few times faster. Look here and here to see how to use the new feature.
(With the RegularExpressions off serialisation/deserialisation times increase linearly with the amount of data being processed.)