Monday, June 30, 2014

Kingston SSDNow V300 120GB - Desktop/Notebook Upgrade kit (SV300S3B7A/120G)

This is practically the same drive I got back in February, which ended up in my Shuttle SG33G5 deskop and my missus really appreciated the improved loading times, so now I decided to buy this again in the upgrade kit package, which comes with a 3.5" mounting plate and screws (plus SATA power and data cable) to finish the job on the desktop while this new SSD drive will end up in my Dell Latitude E6420, with the internal Seagate HDD in the Kingston USB 2.0 enclosure.



Now some could say why buy this one when you can get the bare drive and shop for a separate 2.5" drive adapter, SATA power and data cable and instead get a faster USB 3.0 enclosure. Well, it's a nice little package for ~74 euro from Amazon, the same I paid back in February just for the drive, but if you're looking for better USB performance you should probably look at a different enclosure (see below).

Kingston SSDNow V300 (SV300S37A120G)


Drive came flashed with the latest firmware (525ABBF0) out of the box, and compared to the previous tests it performs as advertised. A lot of people seem to complain about performance but without saying or maybe even knowing on what version of SATA interface they tested it on.

Some loading timings:
Seagate Momentus Thin
(ST250LT007)
Kingston SSDNow v300
(SV300S37A120G)
Windows 8.1 Pro (x64) boot to desktop (incl POST)1m4s15s
Eclipse 4.4 x64 standard (empty workspace)23s9s
World of Tanks v0.9.11m5s33s

* these are "cold" application start times, with the application starting the first time, or in my case in order to repeat the test cleared the "standby" / file manager cache using using RAMMap (see RAMMap - Freeing up memory). "warm" starts are a lot faster due to Windows caching files.


Where before we tested it on a Dell Vostro 1520 with a SATA II interface performance topped at around 250MB/s, on a Dell Latitude E6420 sporting a SATA III interface it went even a little higher than the advertised 450MB/s speeds, that's always nice.

Dell Vostro 1520 (SATA II)
Dell Latitude E6420 (SATA III)


Kingston SNA-DC/U USB


This is a USB 2.0 drive enclosure and it does a decent job at around ~20 MB/s write and ~30 MB/s read. You can find unboxing reviews on YouTube to have a look at it, I liked this one.


Here are some performance tests, with the old Seagate HDD in the USB enclosure and internally to compare.

Kingston SNA-DC/U USB Device



Monday, June 9, 2014

Eclipse: Setting "derived" folders (Groovy Monkey script)

Using Eclipse with Java or Android projects you may have noticed "Open Resource" (CTRL+SHIFT+R) showing files from "bin" folder(s) that you don't want to edit as Eclipse will overwrite them on next build.


Per Eclipse documentation for Derived resources:
A derived resource is a regular file or folder that is created in the course of translating, compiling, copying, or otherwise processing other files. Derived resources are not original data, and can be recreated from other resources. It is commonplace to exclude derived resources from version and configuration management because they would otherwise clutter the team repository with version of these ever-changing files as each user regenerates them.
You could manually update the flag on each resource (Properties) but that is not persisted in a source repository so it is not set automatically when downloading a new project or will get lost when removing and recreating the particular resource.


This Groovy Monkey script will help you set the "derived" flag on chosen resources quickly, especially handy if having multiple projects in the same workspace. Copy and save into a "monkey" folder inside of your project.

/*
 * Menu: Set "derived" folders
 * Script-Path: /Your project/monkey/SetDerivedFolders.gm
 * Kudos: Dan Dar3 <dan.dar33@gmail.com>
 * License: EPL 1.0
 * LANG: Groovy
 * Job: UIJob
 * DOM: http://groovy-monkey.sourceforge.net/update/net.sf.groovyMonkey.dom
 */

import org.eclipse.core.resources.IFolder;

def derivedNames = [ "bin", "gen", "libs", "target" ]

out.println("");
out.println("Derived folders:");
out.println("~~~~~~~~~~~~~~~~");

def projects = workspace.getRoot().getProjects();
for (project in projects) {
  if (project.isOpen()) {
    for (member in project.members()) {
      if (member instanceof IFolder) {
        if (derivedNames.contains(member.getName())) {
          out.println(member.getFullPath().toString()); 
          member.setDerived(true);
        }
      }
    }
  }
}

If you have installed the Groovy Monkey plugin (see links at the end) you will get the script in the Groovy Monkey menu at the top where you can run it from.



Run it again whenever you see generated resources creeping into the "Open Resource" listings (making sure you don't have the "Show derived resources" checked though :-)


Resources: