[llvm-commits] [zorg] r156010 [1/3] - in /zorg/trunk: ./ lnt/ lnt/db/ lnt/docs/ lnt/docs/_templates/ lnt/docs/modules/ lnt/examples/ lnt/lnt/ lnt/lnt/db/ lnt/lnt/external/ lnt/lnt/external/stats/ lnt/lnt/formats/ lnt/lnt/lnttool/ lnt/lnt/server/ lnt/lnt/server/db/ lnt/lnt/server/reporting/ lnt/lnt/server/ui/ lnt/lnt/server/ui/static/ lnt/lnt/server/ui/static/flot/ lnt/lnt/server/ui/static/jquery/1.5/ lnt/lnt/server/ui/templates/ lnt/lnt/testing/ lnt/lnt/testing/util/ lnt/lnt/tests/ lnt/lnt/util/ lnt/tests/ lnt/tests/Fo...
Daniel Dunbar
daniel at zuster.org
Wed May 2 12:48:33 PDT 2012
Author: ddunbar
Date: Wed May 2 14:48:32 2012
New Revision: 156010
URL: http://llvm.org/viewvc/llvm-project?rev=156010&view=rev
Log:
Kill off lnt/ subdir, which has moved to its own top-level (ok, semi top-level) repository.
Removed:
zorg/trunk/lnt/CHANGELOG.txt
zorg/trunk/lnt/README.txt
zorg/trunk/lnt/db/CreateTables.sql
zorg/trunk/lnt/db/UpdateTables.sql
zorg/trunk/lnt/db/sample-input-2.plist
zorg/trunk/lnt/db/sample-input.plist
zorg/trunk/lnt/db/sqlite-to-mysql.sh
zorg/trunk/lnt/docs/Makefile
zorg/trunk/lnt/docs/README.txt
zorg/trunk/lnt/docs/_templates/index.html
zorg/trunk/lnt/docs/_templates/indexsidebar.html
zorg/trunk/lnt/docs/_templates/layout.html
zorg/trunk/lnt/docs/changes.rst
zorg/trunk/lnt/docs/conf.py
zorg/trunk/lnt/docs/contents.rst
zorg/trunk/lnt/docs/intro.rst
zorg/trunk/lnt/docs/make.bat
zorg/trunk/lnt/docs/modules/testing.rst
zorg/trunk/lnt/docs/quickstart.rst
zorg/trunk/lnt/docs/tests.rst
zorg/trunk/lnt/docs/todo.rst
zorg/trunk/lnt/docs/tools.rst
zorg/trunk/lnt/examples/functions.py
zorg/trunk/lnt/lnt/__init__.py
zorg/trunk/lnt/lnt/db/__init__.py
zorg/trunk/lnt/lnt/db/perfdb.py
zorg/trunk/lnt/lnt/db/perfdbsummary.py
zorg/trunk/lnt/lnt/db/runinfo.py
zorg/trunk/lnt/lnt/external/__init__.py
zorg/trunk/lnt/lnt/external/stats/README.txt
zorg/trunk/lnt/lnt/external/stats/__init__.py
zorg/trunk/lnt/lnt/external/stats/pstat.py
zorg/trunk/lnt/lnt/external/stats/stats.py
zorg/trunk/lnt/lnt/formats/AppleOpenSSLReader.py
zorg/trunk/lnt/lnt/formats/JSONFormat.py
zorg/trunk/lnt/lnt/formats/NightlytestReader.py
zorg/trunk/lnt/lnt/formats/PlistFormat.py
zorg/trunk/lnt/lnt/formats/__init__.py
zorg/trunk/lnt/lnt/lnttool/__init__.py
zorg/trunk/lnt/lnt/lnttool/convert.py
zorg/trunk/lnt/lnt/lnttool/create.py
zorg/trunk/lnt/lnt/lnttool/import_data.py
zorg/trunk/lnt/lnt/lnttool/main.py
zorg/trunk/lnt/lnt/lnttool/report.py
zorg/trunk/lnt/lnt/lnttool/updatedb.py
zorg/trunk/lnt/lnt/server/__init__.py
zorg/trunk/lnt/lnt/server/config.py
zorg/trunk/lnt/lnt/server/db/__init__.py
zorg/trunk/lnt/lnt/server/db/testsuite.py
zorg/trunk/lnt/lnt/server/db/testsuitedb.py
zorg/trunk/lnt/lnt/server/db/testsuitetypes.py
zorg/trunk/lnt/lnt/server/db/v4db.py
zorg/trunk/lnt/lnt/server/reporting/__init__.py
zorg/trunk/lnt/lnt/server/reporting/analysis.py
zorg/trunk/lnt/lnt/server/reporting/runs.py
zorg/trunk/lnt/lnt/server/ui/__init__.py
zorg/trunk/lnt/lnt/server/ui/app.py
zorg/trunk/lnt/lnt/server/ui/filters.py
zorg/trunk/lnt/lnt/server/ui/globals.py
zorg/trunk/lnt/lnt/server/ui/graphutil.py
zorg/trunk/lnt/lnt/server/ui/static/View2D.js
zorg/trunk/lnt/lnt/server/ui/static/View2DTest.html
zorg/trunk/lnt/lnt/server/ui/static/favicon.ico
zorg/trunk/lnt/lnt/server/ui/static/flot/API.txt
zorg/trunk/lnt/lnt/server/ui/static/flot/FAQ.txt
zorg/trunk/lnt/lnt/server/ui/static/flot/LICENSE.txt
zorg/trunk/lnt/lnt/server/ui/static/flot/Makefile
zorg/trunk/lnt/lnt/server/ui/static/flot/NEWS.txt
zorg/trunk/lnt/lnt/server/ui/static/flot/PLUGINS.txt
zorg/trunk/lnt/lnt/server/ui/static/flot/README.txt
zorg/trunk/lnt/lnt/server/ui/static/flot/excanvas.js
zorg/trunk/lnt/lnt/server/ui/static/flot/excanvas.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.colorhelpers.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.colorhelpers.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.crosshair.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.crosshair.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.fillbetween.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.fillbetween.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.image.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.image.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.navigate.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.navigate.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.pie.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.pie.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.resize.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.resize.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.selection.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.selection.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.stack.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.stack.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.symbol.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.symbol.min.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.threshold.js
zorg/trunk/lnt/lnt/server/ui/static/flot/jquery.flot.threshold.min.js
zorg/trunk/lnt/lnt/server/ui/static/jquery/1.5/LICENSE.txt
zorg/trunk/lnt/lnt/server/ui/static/jquery/1.5/jquery.js
zorg/trunk/lnt/lnt/server/ui/static/jquery/1.5/jquery.min.js
zorg/trunk/lnt/lnt/server/ui/static/order_aggregate_ui.css
zorg/trunk/lnt/lnt/server/ui/static/order_aggregate_ui.js
zorg/trunk/lnt/lnt/server/ui/static/popup.js
zorg/trunk/lnt/lnt/server/ui/static/sorttable.js
zorg/trunk/lnt/lnt/server/ui/static/style.css
zorg/trunk/lnt/lnt/server/ui/templates/browse.html
zorg/trunk/lnt/lnt/server/ui/templates/error.html
zorg/trunk/lnt/lnt/server/ui/templates/index.html
zorg/trunk/lnt/lnt/server/ui/templates/layout.html
zorg/trunk/lnt/lnt/server/ui/templates/machine.html
zorg/trunk/lnt/lnt/server/ui/templates/run.html
zorg/trunk/lnt/lnt/server/ui/templates/simple_graph.html
zorg/trunk/lnt/lnt/server/ui/templates/simple_machine.html
zorg/trunk/lnt/lnt/server/ui/templates/simple_order_aggregate_report.html
zorg/trunk/lnt/lnt/server/ui/templates/simple_overview.html
zorg/trunk/lnt/lnt/server/ui/templates/simple_run.html
zorg/trunk/lnt/lnt/server/ui/templates/simple_utils.html
zorg/trunk/lnt/lnt/server/ui/templates/submit_run.html
zorg/trunk/lnt/lnt/server/ui/templates/test.html
zorg/trunk/lnt/lnt/server/ui/templates/utils.html
zorg/trunk/lnt/lnt/server/ui/templates/v4_all_orders.html
zorg/trunk/lnt/lnt/server/ui/templates/v4_graph.html
zorg/trunk/lnt/lnt/server/ui/templates/v4_machine.html
zorg/trunk/lnt/lnt/server/ui/templates/v4_order.html
zorg/trunk/lnt/lnt/server/ui/templates/v4_overview.html
zorg/trunk/lnt/lnt/server/ui/templates/v4_run.html
zorg/trunk/lnt/lnt/server/ui/templates/v4_utils.html
zorg/trunk/lnt/lnt/server/ui/util.py
zorg/trunk/lnt/lnt/server/ui/views.py
zorg/trunk/lnt/lnt/testing/__init__.py
zorg/trunk/lnt/lnt/testing/util/__init__.py
zorg/trunk/lnt/lnt/testing/util/commands.py
zorg/trunk/lnt/lnt/testing/util/compilers.py
zorg/trunk/lnt/lnt/testing/util/machineinfo.py
zorg/trunk/lnt/lnt/testing/util/misc.py
zorg/trunk/lnt/lnt/testing/util/rcs.py
zorg/trunk/lnt/lnt/testing/util/valgrind.py
zorg/trunk/lnt/lnt/tests/__init__.py
zorg/trunk/lnt/lnt/tests/builtintest.py
zorg/trunk/lnt/lnt/tests/compile.py
zorg/trunk/lnt/lnt/tests/nt.py
zorg/trunk/lnt/lnt/util/ImportData.py
zorg/trunk/lnt/lnt/util/NTAuxSubmit
zorg/trunk/lnt/lnt/util/NTEmailReport.py
zorg/trunk/lnt/lnt/util/NTUtil.py
zorg/trunk/lnt/lnt/util/ServerUtil.py
zorg/trunk/lnt/lnt/util/__init__.py
zorg/trunk/lnt/lnt/util/stats.py
zorg/trunk/lnt/lnt/util/wsgi_restart.py
zorg/trunk/lnt/setup.py
zorg/trunk/lnt/tests/Formats/Inputs/test.json
zorg/trunk/lnt/tests/Formats/Inputs/test.nightlytest
zorg/trunk/lnt/tests/Formats/Inputs/test.plist
zorg/trunk/lnt/tests/Formats/json.py
zorg/trunk/lnt/tests/Formats/nightlytest.py
zorg/trunk/lnt/tests/Formats/plist.py
zorg/trunk/lnt/tests/__init__.py
zorg/trunk/lnt/tests/lit.cfg
zorg/trunk/lnt/tests/server/db/CreateV4TestSuite.py
zorg/trunk/lnt/tests/server/db/CreateV4TestSuiteInstance.py
zorg/trunk/lnt/tests/server/db/ImportV4TestSuiteInstance.py
zorg/trunk/lnt/tests/server/db/Inputs/sample-a-small.plist
zorg/trunk/lnt/tests/server/db/Inputs/sample-b-small.plist
zorg/trunk/lnt/tests/testing/CalltreeDataLoading.py
zorg/trunk/lnt/tests/testing/Inputs/test-input-01.out
Modified:
zorg/trunk/LICENSE.TXT
zorg/trunk/README.txt
Modified: zorg/trunk/LICENSE.TXT
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/LICENSE.TXT?rev=156010&r1=156009&r2=156010&view=diff
==============================================================================
--- zorg/trunk/LICENSE.TXT (original)
+++ zorg/trunk/LICENSE.TXT Wed May 2 14:48:32 2012
@@ -61,9 +61,5 @@
Program Directory
------- ---------
-GTestCommand zorg/buildbot/commands/GTestCommand.py
-sorttable.js zorg/lnt/viewer/resources/sorttable.js
-External Stats zorg/lnt/external/stats/
+GTestCommand buildbot/commands/GTestCommand.py
jQuery llvmlab/llvmlab/ui/static/jquery/1.5
- lnt/lnt/server/ui/static/jquery/1.5
-Flot lnt/lnt/server/ui/static/flot
Modified: zorg/trunk/README.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/README.txt?rev=156010&r1=156009&r2=156010&view=diff
==============================================================================
--- zorg/trunk/README.txt (original)
+++ zorg/trunk/README.txt Wed May 2 14:48:32 2012
@@ -1,26 +1,18 @@
Zorg - LLVM Testing Infrastructure
==================================
-This directory and its subdirectories contain Zorg, a testing infrastructure for
-LLVM.
+This directory and its subdirectories contain Zorg, the testing infrastructure
+for LLVM.
LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.
Zorg consists of several pieces:
- 1. A general database utilities for storing test results, with
- accompanying utilities.
+ 1. Buildbot configurations for LLVM.
- 2. A web app for submitting and querying test results.
-
- 3. A 'nightlytest' infrastructure built on top of 1 & 2.
-
- 4. Buildbot configurations for LLVM.
-
- 5. Other testing utility scripts.
+ 2. Other testing utility scripts.
Zorg is primarily implemented in Python, and has the following layout:
$ROOT/buildbot/ - Buildbot configurations.
$ROOT/zorg/ - The root zorg Python module.
$ROOT/zorg/buildbot/ - Reusable components for buildbot configurations.
- $ROOT/lnt/ - The LLVM "nightly test" infrastructure.
Removed: zorg/trunk/lnt/CHANGELOG.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/CHANGELOG.txt?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/CHANGELOG.txt (original)
+++ zorg/trunk/lnt/CHANGELOG.txt (removed)
@@ -1,14 +0,0 @@
-0.4.0
-=====
-
-* Major redesign of database schema, primarily for performance reasons.
-
- * New design allows for definition of independent "test suites" which define
- the exact kinds of test data that are stored in the database. This greatly
- increased LNT's utility for testing things other than just the LLVM
- test-suite.
-
-0.3.0
-=====
-
-* Initial release.
Removed: zorg/trunk/lnt/README.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/README.txt?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/README.txt (original)
+++ zorg/trunk/lnt/README.txt (removed)
@@ -1,20 +0,0 @@
-LLVM "Nightly Test" Infrastructure
-==================================
-
-This directory and its subdirectories contain the LLVM nightly test
-infrastructure. This is technically version "3.0" of the LLVM nightly test
-architecture.
-
-The infrastructure has the following layout:
-
- $ROOT/lnt - Top-level Python 'lnt' module
-
- $ROOT/db - Database schema, utilities, and examples of the LNT plist format.
-
- $ROOT/docs - Sphinx documentation for LNT.
-
- $ROOT/tests - Tests for the infrastructure; they currently assume they are
- running on a system with a live instance available at
- 'http://localhost/zorg/'.
-
-For more information, see the web documentation, or docs/.
Removed: zorg/trunk/lnt/db/CreateTables.sql
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/db/CreateTables.sql?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/db/CreateTables.sql (original)
+++ zorg/trunk/lnt/db/CreateTables.sql (removed)
@@ -1,80 +0,0 @@
--- ===- CreateTables.sql - Create SQL Performance DB Tables -----------------===
---
--- The LLVM Compiler Infrastructure
---
--- This file is distributed under the University of Illinois Open Source
--- License. See LICENSE.TXT for details.
---
--- ===-----------------------------------------------------------------------===
-
--- Machine Table
--- Main machine list.
-CREATE TABLE Machine
- (ID INTEGER PRIMARY KEY,
- Name VARCHAR(512),
- Number INTEGER);
-
-CREATE INDEX [Machine_IDX1] ON Machine(ID);
-CREATE INDEX [Machine_IDX2] ON Machine(Name);
-
--- Machine Info Table
--- Arbitrary information associated with a machine.
-CREATE TABLE MachineInfo
- (ID INTEGER PRIMARY KEY,
- Machine INTEGER,
- `Key` TEXT,
- Value TEXT,
- FOREIGN KEY(Machine) REFERENCES Machine(ID));
-
--- Run Table
--- A specific run of a test on a machine.
-CREATE TABLE Run
- (ID INTEGER PRIMARY KEY,
- MachineID INTEGER,
- StartTime DATETIME,
- EndTime DATETIME,
- FOREIGN KEY(MachineID) REFERENCES Machine(ID));
-
-CREATE INDEX [Run_IDX1] ON Run(ID);
-
--- Run Info Table
--- Arbitrary information about a run.
-CREATE TABLE RunInfo
- (ID INTEGER PRIMARY KEY,
- Run INTEGER,
- `Key` TEXT,
- Value TEXT,
- FOREIGN KEY(Run) REFERENCES Run(ID));
-
--- Test Table
--- Tests are made up of several samples.
-CREATE TABLE Test
- (ID INTEGER PRIMARY KEY,
- Name VARCHAR(512),
- Number INTEGER);
-
-CREATE INDEX [Test_IDX1] ON Test(ID);
-CREATE INDEX [Test_IDX2] ON Test(Name);
-
--- Run Info Table
--- Arbitrary information about a run.
-CREATE TABLE TestInfo
- (ID INTEGER PRIMARY KEY,
- Test INTEGER,
- `Key` TEXT,
- Value TEXT,
- FOREIGN KEY(Test) REFERENCES Test(ID));
-
--- Sample Table
--- One data point for a particular test.
-CREATE TABLE Sample
- (ID INTEGER PRIMARY KEY,
- RunID INTEGER,
- TestID INTEGER,
- Value REAL,
- FOREIGN KEY(RunID) REFERENCES Run(ID),
- FOREIGN KEY(TestID) REFERENCES Test(ID));
-
-CREATE INDEX [Sample_IDX1] ON Sample(RunID);
-CREATE INDEX [Sample_IDX2] ON Sample(TestID);
-CREATE INDEX [Sample_IDX3] ON Sample(TestID, RunID);
Removed: zorg/trunk/lnt/db/UpdateTables.sql
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/db/UpdateTables.sql?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/db/UpdateTables.sql (original)
+++ zorg/trunk/lnt/db/UpdateTables.sql (removed)
@@ -1,53 +0,0 @@
-PRAGMA default_cache_size = 2000000;
-
-ALTER TABLE MachineInfo RENAME TO MachineInfoOld;
-CREATE TABLE MachineInfo
- (ID INTEGER PRIMARY KEY,
- Machine INTEGER,
- Key TEXT,
- Value TEXT,
- FOREIGN KEY(Machine) REFERENCES Machine(ID));
-INSERT INTO MachineInfo (Machine,Key,Value)
- SELECT Machine,Key,Value FROM MachineInfoOld;
-DROP TABLE MachineInfoOld;
-
-ALTER TABLE RunInfo RENAME TO RunInfoOld;
-CREATE TABLE RunInfo
- (ID INTEGER PRIMARY KEY,
- Run INTEGER,
- Key TEXT,
- Value TEXT,
- FOREIGN KEY(Run) REFERENCES Run(ID));
-INSERT INTO RunInfo (Run,Key,Value)
- SELECT Run,Key,Value FROM RunInfoOld;
-DROP TABLE RunInfoOld;
-
-ALTER TABLE TestInfo RENAME TO TestInfoOld;
-CREATE TABLE TestInfo
- (ID INTEGER PRIMARY KEY,
- Test INTEGER,
- Key TEXT,
- Value TEXT,
- FOREIGN KEY(Test) REFERENCES Test(ID));
-INSERT INTO TestInfo (Test,Key,Value)
- SELECT Test,Key,Value FROM TestInfoOld;
-DROP TABLE TestInfoOld;
-
-ALTER TABLE Sample RENAME TO SampleOld;
-CREATE TABLE Sample
- (ID INTEGER PRIMARY KEY,
- RunID INTEGER,
- TestID INTEGER,
- Key TEXT,
- Value REAL,
- FOREIGN KEY(RunID) REFERENCES Run(ID),
- FOREIGN KEY(TestID) REFERENCES Test(ID));
-DROP INDEX [Sample_IDX1];
-DROP INDEX [Sample_IDX2];
-BEGIN TRANSACTION;
-INSERT INTO Sample (RunID,TestID,Key,Value)
- SELECT RunID,TestID,Key,Value FROM SampleOld;
-COMMIT TRANSACTION;
-BEGIN TRANSACTION; CREATE INDEX [Sample_IDX1] ON Sample(RunID); COMMIT TRANSACTION;
-BEGIN TRANSACTION; CREATE INDEX [Sample_IDX2] ON Sample(TestID); COMMIT TRANSACTION;
-DROP TABLE SampleOld;
Removed: zorg/trunk/lnt/db/sample-input-2.plist
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/db/sample-input-2.plist?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/db/sample-input-2.plist (original)
+++ zorg/trunk/lnt/db/sample-input-2.plist (removed)
@@ -1,18394 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>Group Info</key>
- <array>
- </array>
- <key>Machine</key>
- <dict>
- <key>Info</key>
- <dict>
- </dict>
- <key>Name</key>
- <string>dgohman.apple.com</string>
- </dict>
- <key>Run</key>
- <dict>
- <key>End Time</key>
- <string>2009-04-02T08:59:38Z</string>
- <key>Info</key>
- <dict>
- <key>llvm-revision</key>
- <string></string>
- <key>tag</key>
- <string>apple_openssl</string>
- </dict>
- <key>Start Time</key>
- <string>2009-04-02T01:14:57Z</string>
- </dict>
- <key>Tests</key>
- <array>
- <dict>
- <key>Data</key>
- <array>
- <real>8044285.2800000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>21080200.41</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>40729729.789999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>54110895.009999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>59754545.039999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>4170517.77</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>4827067.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5119631.3899999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5167611.2400000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5186518.8099999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>59150952.280000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>64680366.329999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>67082764.170000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>67966039.510000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>67334020.400000006</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28020336.109999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>29916122.949999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>30147281.02</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>30833107.399999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>30841060.379999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9577127.7599999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28929716.120000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>66520320.630000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>98637091.530000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>114452885.15000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5532037.7199999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>22059960.440000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>42098054.619999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>66250595.960000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>79623635.879999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26677953.109999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>29546590.690000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>30812519.640000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>31087870.629999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>30711518.699999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>22699246.91</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>23784652.629999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24205952.629999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24314819.789999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24065336.510000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>13407864.07</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>13804663.59</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>13918361.609999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>13950373.359999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>13953139.74</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>23403377.329999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24789633.149999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25150798.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25230036.149999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25181270.59</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>38760629.859999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>44207019.719999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>49245708.25</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>49744184.609999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>49370944.659999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>753029.39000000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>1568589.6000000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>2145430.3900000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>2360630.4700000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>2436763.3500000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>46863003.829999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>50204119.340000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>51749529.109999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>52326429.560000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>51991947.5</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>35355604.689999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>43418556.049999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>44453914.649999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>44901945.539999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>44605994.670000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>13348895.98</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>43134045.469999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>109108225.81</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>176982543.06</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>216028832.88999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10133211.560000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10372472.27</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10437209.58</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10452740.890000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10444167.640000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10675128.34</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>30709421.859999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>67845751.930000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>98687486.670000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>113937776.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9526606.0500000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28643958.870000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>66092137.649999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>98165686.840000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>114442916.92</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>73258744.129999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>75241466.340000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>75692022.790000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>76692025.609999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>76954645.140000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>43033290.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>52679362.810000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>54952655.759999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>55826911.490000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>55401385.5</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>7368460.8399999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>18637123.530000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>34760961.329999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>44852871.409999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>49247797.979999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>52824778.200000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>56686682.149999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58490074.420000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>59168473.439999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58694047.740000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>22167212.359999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>23869826.219999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24179074.289999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24289139.41</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24201942.920000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>19723701.91</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>55702095.509999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>115918890.2</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>161066111.31999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>181710476.84</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8012860.5700000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8878556.4900000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9140157.1199999992</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9195992.2400000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9218932.2699999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>128603190.27</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>143408670.34</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>145616545.16</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>144810604.46000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>145747420.18000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>88884266.340000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>94261245.659999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>95900315.120000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>96226750.040000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>96339753.579999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24378172.100000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>79967228.599999994</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>212239708.59999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>362063452.27999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>458431243.12</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>14630956.810000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58155570.049999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>106027252.37</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>157214161.81999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>185520913.69999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>161617434.16</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>176308413.19</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>180064776.13999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>180720598.94999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>180622521.81999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>67970165.760000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>71380330.079999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>72093426.670000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>71810320.329999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>74101189.959999993</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27499642.350000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28301294.32</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28421633.370000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28514204.77</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28470535.530000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>44962443.32</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>46572969.049999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>47105509.969999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>47187667.640000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>47256229.799999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>115113916.43000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>120042896.16</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121198389.16</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121300239.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>120782665.73999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>2208900.1000000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>4605666.4500000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>6323452.6699999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>6961157.1100000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>7168142.9699999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>103469359.84</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>111095655.77</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>112765463.15000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>112410593.62</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>112938832.45999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>103336354.04000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>107015098.13</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>107848300.84999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>108045638.73</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>107719954.36</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>30370913.199999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>106877662.01000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>306807268.10000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>581032710.76999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>789439723.32000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17618814.390000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17872652.18</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17955080.09</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17974510.93</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17981341.600000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24272183.030000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>75784872.120000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>179396118.5</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>271506344.62</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>320536838.51999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26972111.350000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>84566403.349999994</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>220789212.40000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>368719375.74000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>459478988.00999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>238268630.15000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>263845833.46000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>271416605.08999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>273330478.39999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>274646346.19999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>130264650.39</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>136174264.5</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>137842018.71000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>138050468.97</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>137340600.84999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17286235.16</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>42644076.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>79384565.129999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>101357738.84</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>110621563.98</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>115967280.64</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>125299106.05</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>127119883.02</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>126399076.31999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>127177570.87</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>56731090.189999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58399779.479999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58732196.979999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58634661.560000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58946684.140000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>19991204.52</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>57353748.600000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>118528004.18000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>161988176.06</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>181845906.68000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8046527.7000000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9029230.5500000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9305721.2200000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9335480.2899999991</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9392347.4700000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>134594760.06</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>142271700.66999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>145654882.59</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>145178984.08000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>145722457.31999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>88405392.079999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>94692848.609999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>95946552.489999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>96293166.209999993</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>96389962.170000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25654929.120000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>83903946.840000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>218953744.46000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>366591167.19999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>459392377.88</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>14496661.869999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>57665209.979999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>105164960.20999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>156972407.66999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>185701436.00999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>160228924.84999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>175952813.43000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>179726398.81</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>179744864.22</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>180561849.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>68552248.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>72245913.489999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>73533587.870000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>73433849.569999993</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>74072414.340000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27812142.059999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28356189.059999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28458125.43</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28515711.73</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28522414.329999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>45277147.200000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>46679852.57</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>47151665.770000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>47235278.390000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>47294614.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>112893647.42</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>119574738.79000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121664420.69</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>122163191.5</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121917243.95</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>2166515.6200000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>4512386.3499999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>6172920.5</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>6791931.1200000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>7008004.8200000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>105479178.41</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>110806894.11</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>112857720.34999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>112626644.44</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>112936403.11</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>101889226.72</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>107493561.88</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>108612416.28</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>108949975.25</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>108505752.40000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>30978571.920000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>108494019.53</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>310541848.69999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>578626317.09000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>787731217.37</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17692905.609999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17880822.359999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17962138.370000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17872537.859999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17971918.079999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24899889.739999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>77843629.790000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>182581776.06</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>273401700.02999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>321116878.23000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27624873.879999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>86448866.480000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>224165334.47</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>370973935.92000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>460122647.35000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>238075664.88999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>264174453.30000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>271848739.29000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>273627375.98000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>274725164.13999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>126058068.36</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>135933665.50999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>138886724.5</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>139506587.74000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>138948114.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17463002.66</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>42887837.619999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>79746260.129999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>101929023.8</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>110757460.39</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>117854552.01000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>123844422.36</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>126942441.42</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>126785955.03</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>127172025.13</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>57179312.850000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58437907.289999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58739489.039999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58815498.079999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58788105.189999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>19831707.370000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>56375123.659999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>118129074.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>162317954.53</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>182177691.91999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8514748.8100000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9450376.9800000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9728499.6799999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9781193.8200000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9817500.7400000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>133146066.47</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>141428146.03</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>144180581.22999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>143631275.46000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>144348694.08000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89716579.670000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>94042374.879999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>95343590.950000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>95552668.030000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>95678306.150000006</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24698441.920000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>81069549.329999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>214277859.13999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>362718389.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>456415071.82999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>14364069.43</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>57334392.380000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>103582118.81999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>157410206.84</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>186420735.11000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>159438925.63999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>175199834.68000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>179477777.65000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>179855353.06</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>179127386.41999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>69011695.310000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>72335182.670000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>73276054.219999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>71885097.829999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>72653818.930000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27371143.27</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27695505.239999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27772335.98</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27802274.859999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27817407.890000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>45253450.130000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>46469446.5</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>46834213.170000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>46689720.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>47436899.289999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>112861820.29000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>119769613.52</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>122049848.36</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>122534701.65000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121899593.48999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>2192517.6499999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>4574555.2300000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>6268616.3200000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>6908462.8300000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>7117384.1900000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>105366252.33</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>110650811.62</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>112020228.19</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>111548897.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>111984097.23999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>101927562.18000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>107147575.52</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>108876620.31999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>109303625.81</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>108689852.48999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>30609317.530000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>104288964.38</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>301773311.52999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>570363971.13</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>772567185.01999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17698693.879999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17946467.93</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17964192.23</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17964990.120000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>17970606.32</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24314509.129999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>76367492.620000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>178795782.65000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>271814257.04000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>320547594.18000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27503584.780000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>86723702.170000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>222019341.49000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>367230420.27999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>457173398.54000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>235808747.99000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>262705060.75999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>271417362.75999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>273598317.44</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>274610026.05000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>128013588.56999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>137103103.28</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>139480848.78</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>139909786.63</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>138780490.91</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>16983888.620000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>42086066.030000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>78326042.890000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>100805218.34</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>110010382.56</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>117618006.41</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>124268754.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>125963854.81999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>125537173.41</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>126073742.54000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>57204084.030000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58811042.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58744642.329999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58662931.789999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58519610.149999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5863408.2000000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>14369297.300000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27200532.23</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>35029375.700000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>38388797.009999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>4648119.5599999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5325310.71</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5616219.5700000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5726926.1900000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5748955.8300000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>63769266.640000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>71371258.219999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>73222419.579999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>74298223.609999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>73883297.180000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25934938.440000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26842193.68</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27301709.66</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28599950.27</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>29201404.120000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8325717.4299999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>23225490.25</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>50141486.799999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>70089773.040000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>79646537.769999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>6586886.6699999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26287561.030000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>54048835.049999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89251930.540000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>111501438.73</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20677108.5</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>21712191.359999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>21697216.23</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>22197214.91</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>22300038.960000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>23350459.440000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24546153.899999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>24459803.649999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25519996.16</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25879110.699999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>13594103.810000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>13792077.67</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>13817871.050000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>13914083.17</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>14050507.26</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25182089.07</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27836495.140000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27080592.18</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>28563087.079999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>29250238.969999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>44350897.960000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>46426916.240000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>51767039.539999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>53683374.439999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>54064344.020000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>999440.37</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>2092055.1100000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>2863565.2200000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>3152129.1299999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>3251567.1800000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>51193406.270000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>55610655.229999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>56782020.009999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>57526479.200000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>57300441.729999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>41009721.789999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>42688923.119999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>45613095.490000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>48621023.859999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>48960222.060000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>12182235.91</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>35998006.780000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>80093466.450000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>114951289.17</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>131983435.77</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>12085735.060000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>12493457.880000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>12643077.199999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>12628116.449999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>12620527.560000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8578172.9199999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>22365187.120000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>44544822.219999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>59774444.219999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>66408855.140000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8042581.4299999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>22910290.109999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>49660155.640000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>69952603.840000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>79445068.760000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>76721919.349999994</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>81680075.760000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>82553001.599999994</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>84128985.290000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>84456648.379999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>48507948.530000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>51099846.009999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>55703337.5</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60086302.159999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60584154.609999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>7571833.6900000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>18228678.559999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>33132760.640000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>42046447.630000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>45839814.689999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>57079288.170000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>62332491.380000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>63864967.829999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>64770854.049999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>64482695.270000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>33863130.880000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>31840169.43</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>34782067.969999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>35914992.560000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>36077460.57</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O0</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>22090504.66</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>59828030.490000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>125111431.45999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>171722349.44</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>192851977.75999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8988042.1099999994</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10055265.33</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10361936.66</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10439579.699999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10463631.810000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>114380068.15000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121165650.40000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>123868069.34</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>124665502.51000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>125172605.78</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>81361825.810000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>87895462.269999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89690759.319999993</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>90085833.569999993</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>90248038.299999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26692384.23</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>85649908.540000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>220280282.22</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>366108794.88</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>454137843.08999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>11033810.98</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>43869532.990000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>72875462.719999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>104755636.56999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>120710546.77</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>132584642.25</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>146620316.56999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>149884099.97999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>150602178.86000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>150970420.80000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58821489.530000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>61684060.43</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>62493549.210000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>62643774.299999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>62705684.130000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25704298.699999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26256781.649999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26485695.079999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26508821.719999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26449040.969999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>50403227.270000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>52524130.869999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>53016431.670000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>53250682.710000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>53138460.289999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>96256469.950000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>103862128.69</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>105501133.43000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>105970979.79000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>105654588.64</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>2735646.3199999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5696841.0199999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>7790776.0599999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8585570.3300000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8851042.2699999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89204342.280000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>92953942.25</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>94456477.640000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>94896230.269999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>95260163.629999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>87238416.109999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>91802860.959999993</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>93108153.140000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>93427567.680000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>93112566.870000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>34046721.909999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>115167652.11</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>326327172.37</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>603021554.75999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>799408516.08000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>19685287.41</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20000643.960000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>19914061.559999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20051996.530000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20063554.280000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25993897.02</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>76291828.670000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>176884625.13999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>263280203.19</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>308140078.31</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>32366564.920000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>98869581.939999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>242531866.62</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>379648761.47000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>456358796.30000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>236682370.63</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>252707089.03</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>257092203.31999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>257002095.88</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>258535506.74000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>110033868.61</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>119377446.18000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121296745.76000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121965052.2</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121473152.59999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>15420088.51</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>35519428.509999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>63645995.399999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>79267259.230000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>85578079.260000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>99829918.260000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>105821105.89</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>107619122.47</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>108109625.56999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>108520525.98999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>57383212.090000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>59736124.990000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60234255.119999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60395389.229999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60448627.759999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O2</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>21780437.620000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60275462.409999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>125327006.59999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>171999777.34999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>192939031.97999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8951952.7300000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10002184.529999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10287325.98</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10373648.529999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10410435.73</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>113702507.55</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121189784.61</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>123858878.62</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>124946269.81999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>125086648.51000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>81126968.180000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>86947260.150000006</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89323199.260000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>90087521.120000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>90218808.890000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>27773990.82</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>87916754.239999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>224282073.55000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>366902689.11000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>454642374.79000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>11027773.289999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>44092906.43</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>72721969.769999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>104815602.77</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>120747290.27</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>132593415.01000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>145304208.88</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>149952048.21000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>151050392.97999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>151360978.91999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>59205930.829999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>61640246.68</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>62442358.43</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>62611245.289999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>62676060.380000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25769702.100000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26197147.18</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26472810.559999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26762916.510000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26433848.18</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>50655063.799999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>52597930.649999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>52996879.850000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>53234064.920000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>53165391.869999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>97503770.290000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>103866530.41</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>105434823.31999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>106025295.87</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>105651381.47</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>2704553.1400000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5679186.1299999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>7751520.0700000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8549110.3499999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8831151.5199999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89328527.400000006</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>93245909.989999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>94615295.599999994</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>95277237.310000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>95306073.129999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>86833741.590000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>91775847.310000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>93096517.5</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>93436315.969999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>93113807.640000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>34592571.509999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>115839755.31999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>327363886.38</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>601008271.15999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>801278968.38999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>19676629.420000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20019150.850000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20040945.530000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20050129.109999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20056288.379999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26140410.620000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>76941128.790000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>178004277.08000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>263711963.94999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>308338582.88999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>32407629.010000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>98378322.450000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>241023693.93000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>380055150.00999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>456912173.31999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>236856036.06999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>252886500.44</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>257284618.40000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>257215500.81</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>258698502.06</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>109098120.78</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>119524325.94</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121555236.76000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>122099829.68000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>121489778.38</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>15108646.970000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>35105073.710000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>63598466.619999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>79045457.150000006</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>85199912.670000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>99821682.099999994</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>105910165.79000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>107733947.34</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>108214819.51000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>108538047.62</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58033864.68</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>59757054.579999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60242401.460000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60442209.329999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60457342.920000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>O3</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>21816777.289999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>59194022.770000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>124502959.31999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>171565968.84999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>193049952.47</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rmd160.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8899657.4499999993</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>9969875.0800000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10275431.52</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10355287.039999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>10376884.23</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.mdc2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>111860408.19</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>118842557.83</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>120479884.01000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>120948184.83</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>120782343.67</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>82003248.459999993</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>88079323.030000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89285851.280000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89265064.870000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89281416.329999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.blowfish cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26769597.52</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>85710108.430000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>218681618.69</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>364464932.72000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>455244450.26999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md5.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>11231048.800000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>44664626.340000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>74107602.950000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>106717643.18000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>122875358.15000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha512.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>131355994.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>144324550.87</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>148185471.28999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>149206272.81</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>149408741.31</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc5-32/12 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>58671686.82</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>61876561.909999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>62566696.460000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>62401068.189999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>62811880.109999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.cast cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25844518.66</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26578936.789999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26771700.260000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26757482.280000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>26362591.899999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc2 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>49899503.299999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>51776204.170000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>52454970.310000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>52399714.68</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>52649239.82</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>97317470.689999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>100686219.51000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>101664591.23999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>101887587.52</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>101503509.45</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.idea cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>2562404.1299999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>5380347.2000000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>7385573.6799999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8148995.5800000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>8404392.4900000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md2.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>86834599.430000007</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>90763706.569999993</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>91540278.25</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>91733570.829999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>91638845.359999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>86232852.420000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>88883903.109999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89588800.650000006</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89784394.269999996</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>89400216.780000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>34377118.200000003</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>114223118.31999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>323615998.77999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>593795106.54999995</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>793628840.94000006</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.md4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>19837079.84</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20133043.879999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20171726.739999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20158860.34</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>20172390.16</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.des ede3.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>25845308.359999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>77990199.890000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>179173445.81999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>263457783.63</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>307191569.60000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha1.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>32707585.390000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>98429120.209999993</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>242253207.31</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>379772124.87</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>456672346.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.hmac(md5).ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>233686958.00999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>249252626.59</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>253336991.78</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>254976999.02000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>258263836.03999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.rc4.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>111198945.13</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>115942207.37</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>117138301.22</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>117490280.56999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>116952585.64</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-128 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>15249765.43</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>36096882.119999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>63467444.75</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>79205924.670000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>85331911.230000004</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.sha256.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>98141001.870000005</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>103046297.22</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>104133783.97</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>104472549.20999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>104298634.90000001</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.aes-192 ige.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>0.0</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.camellia-256 cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>59015111.420000002</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>16</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>59917366.32</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>64</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60551314.369999997</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>256</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60708996.359999999</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>1024</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- <dict>
- <key>Data</key>
- <array>
- <real>60734068.509999998</real>
- </array>
- <key>Info</key>
- <dict>
- <key>blockSize</key>
- <integer>8192</integer>
- <key>compiler</key>
- <string>llvm-gcc</string>
- <key>compiler_flags</key>
- <string>Os</string>
- </dict>
- <key>Name</key>
- <string>apple_openssl.seed cbc.ips</string>
- </dict>
- </array>
-</dict>
-</plist>
Removed: zorg/trunk/lnt/db/sample-input.plist
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/db/sample-input.plist?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/db/sample-input.plist (original)
+++ zorg/trunk/lnt/db/sample-input.plist (removed)
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>Machine</key>
- <dict>
- <key>Name</key>
- <string></string>
- <key>Info</key>
- <dict>
- <key>Memory</key>
- <string>6G</string>
- <key>Triple</key>
- <string>i386-apple-darwin9</string>
- </dict>
- </dict>
- <key>Run</key>
- <dict>
- <key>End Time</key>
- <string>2009-04-02T08:59:38Z</string>
- <key>Info</key>
- <dict>
- <key>llvm-revision</key>
- <string>60300</string>
- <key>tag</key>
- <string>test-suite-name</string>
- </dict>
- <key>Start Time</key>
- <string>2009-04-02T01:14:57Z</string>
- </dict>
- <key>Tests</key>
- <array>
- <dict>
- <key>Name</key>
- <string>test.name.in.dotted.notation</string>
- <key>Info</key>
- <dict>
- <key>Compiler</key>
- <string>gcc</string>
- <key>Compiler Flags</key>
- <string>-O2 -g</string>
- </dict>
- <key>Data</key>
- <array>
- <real>0.122</real>
- <real>0.125</real>
- </array>
- </dict>
- </array>
-</dict>
-</plist>
Removed: zorg/trunk/lnt/db/sqlite-to-mysql.sh
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/db/sqlite-to-mysql.sh?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/db/sqlite-to-mysql.sh (original)
+++ zorg/trunk/lnt/db/sqlite-to-mysql.sh (removed)
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-set -eu
-
-if [ $# != 2 ]; then
- echo "Usage: $0 <sqlite3-database> <output file>"
-
- echo " Dumps the sqlite3 database to the output file "
- echo " in SQL syntax that MySQL can understand."
-
- exit 1
-fi
-
-in=$1
-out=$2
-
-sqlite3 $in .dump | \
- sed -e 's#CREATE INDEX.*##g' \
- -e 's#ANALYZE sqlite_master.*##g' \
- -e 's#INSERT INTO "sqlite_stat1" VALUES.*##g' \
- -e 's# Key \([ ]*\)TEXT# `Key`\1TEXT#g' \
- -e 's#BEGIN TRANSACTION#START TRANSACTION#g' \
- -e 's#INSERT INTO "\(.*\)"#INSERT INTO \1#g' > $out
Removed: zorg/trunk/lnt/docs/Makefile
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/Makefile?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/Makefile (original)
+++ zorg/trunk/lnt/docs/Makefile (removed)
@@ -1,120 +0,0 @@
-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS =
-SPHINXBUILD = sphinx-build
-PAPER =
-BUILDDIR = _build
-
-# Internal variables.
-PAPEROPT_a4 = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp epub latex changes linkcheck doctest
-
-all: html
-
-help:
- @echo "Please use \`make <target>' where <target> is one of"
- @echo " html to make standalone HTML files"
- @echo " dirhtml to make HTML files named index.html in directories"
- @echo " singlehtml to make a single large HTML file"
- @echo " pickle to make pickle files"
- @echo " json to make JSON files"
- @echo " htmlhelp to make HTML files and a HTML help project"
- @echo " qthelp to make HTML files and a qthelp project"
- @echo " devhelp to make HTML files and a Devhelp project"
- @echo " epub to make an epub"
- @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
- @echo " latexpdf to make LaTeX files and run them through pdflatex"
- @echo " changes to make an overview of all changed/added/deprecated items"
- @echo " linkcheck to check all external links for integrity"
- @echo " doctest to run all doctests embedded in the documentation (if enabled)"
-
-clean:
- -rm -rf $(BUILDDIR)/*
-
-html:
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
- $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
- $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
- @echo
- @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
- $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
- @echo
- @echo "Build finished; now you can process the pickle files."
-
-json:
- $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
- @echo
- @echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
- $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
- @echo
- @echo "Build finished; now you can run HTML Help Workshop with the" \
- ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
- $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
- @echo
- @echo "Build finished; now you can run "qcollectiongenerator" with the" \
- ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
- @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/LNT.qhcp"
- @echo "To view the help file:"
- @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/LNT.qhc"
-
-devhelp:
- $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) _build/devhelp
- @echo
- @echo "Build finished."
- @echo "To view the help file:"
- @echo "# mkdir -p $$HOME/.local/share/devhelp/LNT"
- @echo "# ln -s _build/devhelp $$HOME/.local/share/devhelp/LNT"
- @echo "# devhelp"
-
-epub:
- $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
- @echo
- @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo
- @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
- @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
- "run these through (pdf)latex."
-
-latexpdf: latex
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex
- @echo "Running LaTeX files through pdflatex..."
- make -C _build/latex all-pdf
- @echo "pdflatex finished; the PDF files are in _build/latex."
-
-changes:
- $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
- @echo
- @echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
- $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
- @echo
- @echo "Link check complete; look for any errors in the above output " \
- "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
- @echo "Testing of doctests in the sources finished, look at the " \
- "results in $(BUILDDIR)/doctest/output.txt."
Removed: zorg/trunk/lnt/docs/README.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/README.txt?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/README.txt (original)
+++ zorg/trunk/lnt/docs/README.txt (removed)
@@ -1,7 +0,0 @@
- LNT Documentation
-==================
-
-The LNT documentation is written using the Sphinx documentation generator. It is
-currently tested with Sphinx 1.0dev.
-
-We currently use the 'nature' theme and a Beaker inspired structure.
Removed: zorg/trunk/lnt/docs/_templates/index.html
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/_templates/index.html?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/_templates/index.html (original)
+++ zorg/trunk/lnt/docs/_templates/index.html (removed)
@@ -1,38 +0,0 @@
-{% extends "layout.html" %}
-{% set title = 'LNT' %}
-{% block body %}
-<h1>LNT - LLVM Performance Tracking Software</h1>
-
-<p>
- LNT is LLVM's performance tracking software. This is the web page for the LNT
- software itself, the current online version of the server is available
- at <a href="http://llvm.org/perf/">http://llvm.org/perf/</a>.
-</p>
-
-<h2>Documentation</h2>
-<table class="contentstable" align="center" style="margin-left: 30px">
- <tr>
- <td width="50%">
- <p class="biglink"><a class="biglink" href="{{ pathto("contents") }}">
- Contents</a><br/>
- <span class="linkdescr">for a complete overview</span></p>
- <p class="biglink"><a class="biglink" href="{{ pathto("search") }}">
- Search page</a><br/>
- <span class="linkdescr">search the documentation</span></p>
- </td><td width="50%">
- <p class="biglink"><a class="biglink" href="{{ pathto("genindex") }}">
- General Index</a><br/>
- <span class="linkdescr">all functions, classes, terms</span></p>
- <p class="biglink"><a class="biglink" href="{{ pathto("modindex") }}">
- Module Index</a><br/>
- <span class="linkdescr">quick access to all documented modules</span></p>
- </td></tr>
-</table>
-
-<h2>Source</h2>
-<p>LNT is available in the LLVM "zorg" SVN repository:
- <tt>svn co
- <a href="http://llvm.org/svn/llvm-project/zorg/trunk/lnt">
- http://llvm.org/svn/llvm-project/zorg/trunk/lnt</a></tt>.</p>
-
-{% endblock %}
Removed: zorg/trunk/lnt/docs/_templates/indexsidebar.html
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/_templates/indexsidebar.html?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/_templates/indexsidebar.html (original)
+++ zorg/trunk/lnt/docs/_templates/indexsidebar.html (removed)
@@ -1,12 +0,0 @@
-<h3>Install</h3>
-<ul>
- <li>Current release:<br>
- <tt>easy_install lnt=={{ version }}</tt></li>
- <li>Development release:<br>
- <tt>easy_install lnt==dev</tt></li>
-</ul>
-
-<h3>Bugs</h3>
-
-<p>LNT bugs should be reported at the
- LLVM <a href="http://llvm.org/bugs">Bugzilla</a>.</p>
Removed: zorg/trunk/lnt/docs/_templates/layout.html
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/_templates/layout.html?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/_templates/layout.html (original)
+++ zorg/trunk/lnt/docs/_templates/layout.html (removed)
@@ -1,13 +0,0 @@
-{% extends "!layout.html" %}
-
-{% block extrahead %}
-<style type="text/css">
- table.right { float: right; margin-left: 20px; }
- table.right td { border: 1px solid #ccc; }
-</style>
-{% endblock %}
-
-{% block rootrellink %}
- <li><a href="{{ pathto('index') }}">LNT Home</a> | </li>
- <li><a href="{{ pathto('contents') }}">Documentation</a>»</li>
-{% endblock %}
Removed: zorg/trunk/lnt/docs/changes.rst
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/changes.rst?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/changes.rst (original)
+++ zorg/trunk/lnt/docs/changes.rst (removed)
@@ -1,8 +0,0 @@
-:tocdepth: 2
-
-.. _changes:
-
-Changelog
-*********
-
-.. include:: ../CHANGELOG.txt
Removed: zorg/trunk/lnt/docs/conf.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/conf.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/conf.py (original)
+++ zorg/trunk/lnt/docs/conf.py (removed)
@@ -1,242 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# LNT documentation build configuration file, created by
-# sphinx-quickstart on Fri Dec 25 10:01:58 2009.
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import datetime, sys, os
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-sys.path.append(os.path.abspath('..'))
-
-import lnt
-
-project = "LNT"
-project_module = lnt
-
-# -- General configuration -----------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-#needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.coverage']
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The encoding of source files.
-#source_encoding = 'utf-8-sig'
-
-# The master toctree document.
-master_doc = 'contents'
-
-# General information about the project.
-copyright = u'%s, %s' % (datetime.datetime.now().year,
- project_module.__author__)
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = project_module.__version__
-# The full version, including alpha/beta/rc tags.
-release = project_module.__version__
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-today_fmt = '%Y-%m-%d'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = ['_build']
-
-# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-show_authors = True
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-
-# -- Options for HTML output ---------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. Major themes that come with
-# Sphinx are currently 'default' and 'sphinxdoc'.
-html_theme = 'nature'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further. For a list of options available for each theme, see the
-# documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents. If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar. Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-#html_static_path = ['_static']
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-html_last_updated_fmt = '%Y-%m-%d'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-html_sidebars = {'index': 'indexsidebar.html'}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-html_additional_pages = {'index': 'index.html'}
-
-# If false, no module index is generated.
-#html_use_modindex = True
-
-# If false, no index is generated.
-#html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-html_show_sourcelink = False
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it. The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = ''
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = '%sdoc' % project
-
-
-# -- Options for LaTeX output --------------------------------------------------
-
-# The paper size ('letter' or 'a4').
-#latex_paper_size = 'letter'
-
-# The font size ('10pt', '11pt' or '12pt').
-#latex_font_size = '10pt'
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
-latex_documents = [
- ('contents', '%s.tex' % project, u'%s Documentation' % project,
- project_module.__author__, 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# Additional stuff for the LaTeX preamble.
-#latex_preamble = ''
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_use_modindex = True
-
-
-# -- Options for Epub output ---------------------------------------------------
-
-# Bibliographic Dublin Core info.
-#epub_title = ''
-#epub_author = ''
-#epub_publisher = ''
-#epub_copyright = ''
-
-# The language of the text. It defaults to the language option
-# or en if the language is not set.
-#epub_language = ''
-
-# The scheme of the identifier. Typical schemes are ISBN or URL.
-#epub_scheme = ''
-
-# The unique identifier of the text. This can be a ISBN number
-# or the project homepage.
-#epub_identifier = ''
-
-# A unique identification for the text.
-#epub_uid = ''
-
-# HTML files that should be inserted before the pages created by sphinx.
-# The format is a list of tuples containing the path and title.
-#epub_pre_files = []
-
-# HTML files shat should be inserted after the pages created by sphinx.
-# The format is a list of tuples containing the path and title.
-#epub_post_files = []
-
-# A list of files that should not be packed into the epub file.
-#epub_exclude_files = []
-
-# The depth of the table of contents in toc.ncx.
-#epub_tocdepth = 3
Removed: zorg/trunk/lnt/docs/contents.rst
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/contents.rst?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/contents.rst (original)
+++ zorg/trunk/lnt/docs/contents.rst (removed)
@@ -1,35 +0,0 @@
-.. _contents:
-
-Contents
-========
-
-.. toctree::
- :maxdepth: 2
-
- intro
-
- quickstart
-
- tools
-
- tests
-
- changes
-
- todo
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
-
-
-Module Listing
---------------
-
-.. toctree::
- :maxdepth: 2
-
- modules/testing
Removed: zorg/trunk/lnt/docs/intro.rst
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/intro.rst?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/intro.rst (original)
+++ zorg/trunk/lnt/docs/intro.rst (removed)
@@ -1,102 +0,0 @@
-.. _intro:
-
-Introduction
-============
-
-LNT is designed to be a generic infastrcture for performance testing. The LNT
-software itself consists of two main parts, a web application for accessing and
-visualizing performance data, and command line utilities to allow users to
-generate and submit test results to the server.
-
-If you are an LLVM developer who is mostly interested in just using LNT to run
-the test-suite against some compiler, then you should fast forward to the
-:ref:`quickstart` or to the information on :ref:`tests`.
-
-LNT uses a simple and extensible format for interchanging data between the test
-producers and the server; this allows the LNT server to receive and store data
-for a wide variety of applications.
-
-Both the LNT client and server are written in Python, however the test data
-itself can be passed in one of several formats, including property lists and
-JSON. This makes it easy to produce test results from almost any language.
-
-
-Installation
-------------
-
-If you are only interested in using LNT to run tests locally, see the
-:ref:`quickstart`.
-
-If you want to run an LNT server, you will need to perform the following
-additional steps:
-
- 2. Create a new LNT installation:
-
- lnt create path/to/install-dir
-
- This will create the LNT configuration file, the default database, and a
- .wsgi wrapper to create the application. You can execute the generated app
- directly to run with the builtin web server, or use
-
- lnt runserver path/to/install-dir
-
- which provides additional command line options. Neither of these servers is
- recommended for production use.
-
- 3. Edit the generated 'lnt.cfg' file if necessary, for example to:
-
- a. Update the databases list.
-
- b. Update the public URL the server is visible at.
-
- c. Update the nt_emailer configuration.
-
- 4. Add the 'zorg.wsgi' app to your Apache configuration. You should set also
- configure the WSGIDaemonProcess and WSGIProcessGroup variables if not
- already done.
-
- If running in a virtualenv you will need to configure that as well; see the
- `modwsgi wiki <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
-
-
-Development
------------
-
-Developing LNT should be done under a virtualenv (most likely in 'develop'
-mode). Currently, the tests require:
-
- 1. 'lit', the LLVM test runner, is available.
-
- 2. If inside a virtualenv, the virtualenv will need to be activated because the
- tests want to run Python directly. This should be fixed to substitute in the
- Python that was used to run lit, so the venv doesn't have to be active.
-
-To run the tests, use, e.g.,
-
- lit -sv $ROOT/lnt/tests
-
-or
-
- lit -sv $ZORG_ROOT/test
-
-to run the zorg and LNT tests all at once. You can use
-
- python setup.py test
-
-if you prefer 'unittest' style output (this still requires that 'lit' be
-installed).
-
-
-Architecture
-------------
-
-The LNT web app is currently implemented as a Flask WSGI web app, with Jinja2
-for the templating engine. My hope is to eventually move to a more AJAXy web
-interface.
-
-The database layer uses SQLAlchemy for its ORM, and is typically backed by
-SQLite, although I have tested on MySQL on the past, and supporting other
-databases should be trivial. My plan is to always support SQLite as this allows
-the possibility of developers easily running their own LNT installation for
-viewing nightly test results, and to run with whatever DB makes the most sense
-on the server.
Removed: zorg/trunk/lnt/docs/make.bat
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/make.bat?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/make.bat (original)
+++ zorg/trunk/lnt/docs/make.bat (removed)
@@ -1,113 +0,0 @@
- at ECHO OFF
-
-REM Command file for Sphinx documentation
-
-set SPHINXBUILD=sphinx-build
-set BUILDDIR=_build
-set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
-if NOT "%PAPER%" == "" (
- set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
-)
-
-if "%1" == "" goto help
-
-if "%1" == "help" (
- :help
- echo.Please use `make ^<target^>` where ^<target^> is one of
- echo. html to make standalone HTML files
- echo. dirhtml to make HTML files named index.html in directories
- echo. pickle to make pickle files
- echo. json to make JSON files
- echo. htmlhelp to make HTML files and a HTML help project
- echo. qthelp to make HTML files and a qthelp project
- echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
- echo. changes to make an overview over all changed/added/deprecated items
- echo. linkcheck to check all external links for integrity
- echo. doctest to run all doctests embedded in the documentation if enabled
- goto end
-)
-
-if "%1" == "clean" (
- for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
- del /q /s %BUILDDIR%\*
- goto end
-)
-
-if "%1" == "html" (
- %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
- echo.
- echo.Build finished. The HTML pages are in %BUILDDIR%/html.
- goto end
-)
-
-if "%1" == "dirhtml" (
- %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
- echo.
- echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
- goto end
-)
-
-if "%1" == "pickle" (
- %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
- echo.
- echo.Build finished; now you can process the pickle files.
- goto end
-)
-
-if "%1" == "json" (
- %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
- echo.
- echo.Build finished; now you can process the JSON files.
- goto end
-)
-
-if "%1" == "htmlhelp" (
- %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
- echo.
- echo.Build finished; now you can run HTML Help Workshop with the ^
-.hhp project file in %BUILDDIR%/htmlhelp.
- goto end
-)
-
-if "%1" == "qthelp" (
- %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
- echo.
- echo.Build finished; now you can run "qcollectiongenerator" with the ^
-.qhcp project file in %BUILDDIR%/qthelp, like this:
- echo.^> qcollectiongenerator %BUILDDIR%\qthelp\LNT.qhcp
- echo.To view the help file:
- echo.^> assistant -collectionFile %BUILDDIR%\qthelp\LNT.ghc
- goto end
-)
-
-if "%1" == "latex" (
- %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
- echo.
- echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
- goto end
-)
-
-if "%1" == "changes" (
- %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
- echo.
- echo.The overview file is in %BUILDDIR%/changes.
- goto end
-)
-
-if "%1" == "linkcheck" (
- %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
- echo.
- echo.Link check complete; look for any errors in the above output ^
-or in %BUILDDIR%/linkcheck/output.txt.
- goto end
-)
-
-if "%1" == "doctest" (
- %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
- echo.
- echo.Testing of doctests in the sources finished, look at the ^
-results in %BUILDDIR%/doctest/output.txt.
- goto end
-)
-
-:end
Removed: zorg/trunk/lnt/docs/modules/testing.rst
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/modules/testing.rst?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/modules/testing.rst (original)
+++ zorg/trunk/lnt/docs/modules/testing.rst (removed)
@@ -1,5 +0,0 @@
-:mod:`lnt.testing` -- Test Data Creation
-========================================
-
-.. automodule:: lnt.testing
- :members:
Removed: zorg/trunk/lnt/docs/quickstart.rst
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/quickstart.rst?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/quickstart.rst (original)
+++ zorg/trunk/lnt/docs/quickstart.rst (removed)
@@ -1,105 +0,0 @@
-.. _quickstart:
-
-Quickstart Guide
-================
-
-This quickstart guide is designed for LLVM developers who are primarily
-interested in using LNT to test compilers using the LLVM test-suite.
-
-Installation
-------------
-
-The first thing to do is to checkout install the LNT software itself. The
-following steps should suffice on any modern Unix variant:
-
-#. Install ``virtualenv``, if necessary::
-
- sudo easy_install virtualenv
-
- ``virtualenv`` is a standard Python tool for allowing the installation of
- Python applications into their own sandboxes, or virtual environments.
-
-#. Create a new virtual environment for the LNT application::
-
- virtualenv ~/mysandbox
-
- This will create a new virtual environment at ``~/mysandbox``.
-
-#. Checkout the LNT sources::
-
- svn co http://llvm.org/svn/llvm-project/zorg/trunk/lnt ~/lnt
-
-#. Install LNT into the virtual environment::
-
- ~/mysandbox/bin/python ~/lnt/setup.py develop
-
- We recommend using ``develop`` instead of install for local use, so that any
- changes to the LNT sources are immediately propagated to your
- installation. If you are running a production install or care a lot about
- stability, you can use ``install`` which will copy in the sources and you
- will need to explicitly re-install when you wish to update the LNT
- application.
-
-That's it!
-
-
-Running Tests
--------------
-
-To execute the LLVM test-suite using LNT you use the ``lnt runtest``
-command. The information below should be enough to get you started, but see the
-:ref:`tests` section for more complete documentation.
-
-#. Checkout the LLVM test-suite, if you haven't already::
-
- svn co http://llvm.org/svn/llvm-project/test-suite/trunk ~/llvm-test-suite
-
- You should always keep the test-suite directory itself clean (that is, never
- do a configure inside your test suite). Make sure not to check it out into
- the LLVM projects directory, as LLVM's configure/make build will then want to
- automatically configure it for you.
-
-#. Execute the ``lnt runtest nt`` test producer, point it at the test suite and
- the compiler you want to test::
-
- lnt runtest nt \
- --sandbox SANDBOX \
- --cc ~/llvm.obj/Release/bin/clang \
- --test-suite ~/llvm-test-suite
-
- The ``SANDBOX`` value is a path to where the test suite build products and
- results will be stored (inside a timestamped directory, by default).
-
-
-Viewing Results
----------------
-
-By default, ``lnt runtest nt`` will show the passes and failures after doing a
-run, but if you are interested in viewing the result data in more detail you
-should install a local LNT instance to submit the results to.
-
-You can create a local LNT instance with, e.g.::
-
- lnt create ~/myperfdb
-
-This will create an LNT instance at ``~/myperfdb`` which includes the
-configuration of the LNT application and a SQLite database for storing the
-results.
-
-Once you have a local instance, you can either submit results directly with::
-
- lnt import ~/myperfdb SANDBOX/test-<stamp>/report.json
-
-or as part of a run with::
-
- lnt runtest --submit ~/myperfdb nt ... arguments ...
-
-Once you have submitted results into a database, you can run the LNT web UI
-with::
-
- lnt runserver ~/myperfdb
-
-which runs the server on ``http://localhost:8000`` by default.
-
-In the future, LNT will grow a robust set of command line tools to allow
-investigation of performance results without having to use the web UI.
Removed: zorg/trunk/lnt/docs/tests.rst
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/tests.rst?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/tests.rst (original)
+++ zorg/trunk/lnt/docs/tests.rst (removed)
@@ -1,227 +0,0 @@
-.. _tests:
-
-Test Producers
-==============
-
-On the client-side, LNT comes with a number of built-in test data producers.
-This section focuses on the LLVM test-suite (aka nightly test) generator, since
-it is the primary test run using the LNT infrastructure, but note that LNT also
-includes tests for other interesting pieces of data, for example Clang
-compile-time performance.
-
-LNT also makes it easy to add new test data producers and includes examples of
-custom data importers (e.g., to import buildbot build information into) and
-dynamic test data generators (e.g., abusing the infrastructure to plot graphs,
-for example).
-
-Running a Local Server
-----------------------
-
-It is useful to set up a local LNT server to view the results of tests, either
-for personal use or to preview results before submitting them to a public
-server. To set up a one-off server for testing::
-
- # Create a new installation in /tmp/FOO.
- $ lnt create /tmp/FOO
- created LNT configuration in '/tmp/FOO'
- ...
-
- # Run a local LNT server.
- $ lnt runserver /tmp/FOO &> /tmp/FOO/runserver.log &
- [2] 69694
-
- # Watch the server log.
- $ tail -f /tmp/FOO/runserver.log
- * Running on http://localhost:8000/
- ...
-
-Running Tests
--------------
-
-The built-in tests are designed to be run via the ``lnt`` tool. The
-following tools for working with built-in tests are available:
-
- ``lnt showtests``
- List the available tests. Tests are defined with an extensible
- architecture. FIXME: Point at docs on how to add a new test.
-
- ``lnt runtest [<run options>] <test name> ... test arguments ...``
- Run the named test. The run tool itself accepts a number of options which
- are common to all tests. The most common option is ``--submit=<url>`` which
- specifies the server to submit the results to after testing is complete. See
- ``lnt runtest --help`` for more information on the available options.
-
- The remainder of the options are passed to the test tool itself. The options
- are specific to the test, but well behaved tests should respond to ``lnt
- runtest <test name> --help``. The following section provides specific
- documentation on the built-in tests.
-
-Built-in Tests
---------------
-
-LLVM test-suite (aka LLVM nightly test)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The ``nt`` built-in test runs the LLVM test-suite execution and performance
-tests, in the "nightly test" configuration. This test allows running many
-different applications and benchmarks (e.g., SPEC), with various compile
-options, and in several different configurations (for example, using an LLVM
-compiler like ``clang`` or ``llvm-gcc``, running under the LLVM JIT compiler
-using the LLVM ``lli`` bit-code interpreter, or testing new code generator
-passes).
-
-The ``nt`` test requires that the LLVM test-suite repository, a working LLVM
-compiler, and a LLVM source and build tree are available. Currently, the LLVM
-build tree is expected to have been built-in the Release+Asserts configuration.
-Unlike the prior ``NewNightlyTest.pl``, the ``nt`` tool does not checkout or build
-any thing, it is expected that users manage their own LLVM source and build
-trees. Ideally, each of the components should be based on the same LLVM revision
-(except perhaps the LLVM test-suite), but this is not required.
-
-The test runs the LLVM test-suite builds and execution inside a user specificed
-sandbox directory. By default, each test run will be done in a timestamped
-directory inside the sandbox, and the results left around for post-mortem
-analysis. Currently, the user is responsible for cleaning up these directories
-to manage disk space.
-
-The tests are always expected to be run using out-of-tree builds -- this is a
-more robust model and allow sharing the same source trees across many test
-runs. One current limitation is that the LLVM test-suite repository will not
-function correctly if an in-tree build is done, followed by an out-of-tree
-build. It is very important that the LLVM test-suite repository be left
-pristine.
-
-The following command shows an example of running the ``nt`` test suite on a
-local build::
-
- $ rm -rf /tmp/BAR
- $ lnt runtest nt \
- --sandbox /tmp/BAR \
- --cc ~/llvm.obj.64/Release+Asserts/bin/clang \
- --cxx ~/llvm.obj.64/Release+Asserts/bin/clang++ \
- --llvm-src ~/llvm \
- --llvm-obj ~/llvm.obj.64 \
- --test-suite ~/llvm-test-suite \
- TESTER_NAME \
- -j 16
- 2010-04-17 23:46:40: using nickname: 'TESTER_NAME__clang_DEV__i386'
- 2010-04-17 23:46:40: creating sandbox: '/tmp/BAR'
- 2010-04-17 23:46:40: starting test in '/private/tmp/BAR/test-2010-04-17_23-46-40'
- 2010-04-17 23:46:40: configuring...
- 2010-04-17 23:46:50: testing...
- 2010-04-17 23:51:04: loading test data...
- 2010-04-17 23:51:05: generating report: '/private/tmp/BAR/test-2010-04-17_23-46-40/report.json'
-
-The first seven arguments are all required -- they specify the sandbox path, the
-compilers to test, and the paths to the required sources and builds. The
-``TESTER_NAME`` argument is used to derive the name for this tester (in
-conjunction which some inferred information about the compiler under test). This
-name is used as a short identifier for the test machine; generally it should be
-the hostname of the machine or the name of the person who is responsible for the
-tester. The ``-j 16`` argument is optional, in this case it specifies that tests
-should be run in parallel using up to 16 processes.
-
-In this case, we can see from the output that the test created a new sandbox
-directory, then ran the test in a subdirectory in that sandbox. The test outputs
-a limited about of summary information as testing is in progress. The full
-information can be found in .log files within the test build directory (e.g.,
-``configure.log`` and ``test.log``).
-
-The final test step was to generate a test report inside the test
-directory. This report can now be submitted directly to an LNT server. For
-example, if we have a local server running as described earlier, we can run::
-
- $ lnt submit --commit=1 http://localhost:8000/submitRun \
- /tmp/BAR/test-2010-04-17_23-46-40/report.json
- STATUS: 0
-
- OUTPUT:
- IMPORT: /tmp/FOO/lnt_tmp/data-2010-04-17_16-54-35ytpQm_.plist
- LOAD TIME: 0.34s
- IMPORT TIME: 5.23s
- ADDED: 1 machines
- ADDED: 1 runs
- ADDED: 1990 tests
- COMMITTING RESULT: DONE
- TOTAL IMPORT TIME: 5.57s
-
-and view the results on our local server.
-
-LNT-based NT test modules
-+++++++++++++++++++++++++
-
-In order to support more complicated tests, or tests which are not easily
-integrated into the more strict SingleSource or MultiSource layout of the LLVM
-test-suite module, the ``nt`` built-in test provides a mechanism for LLVM
-test-suite tests that just define an extension test module. These tests are
-passed the user configuration parameters for a test run and expected to return
-back the test results in the LNT native format.
-
-Test modules are defined by providing a ``TestModule`` file in a subdirectory of
-the ``LNTBased`` root directory inside the LLVM test-suite repository. The
-``TestModule`` file is expected to be a well-formed Python module that provides
-a ``test_class`` global variable which should be a subclass of the
-``lnt.tests.nt.TestModule`` abstract base class.
-
-The test class should override the ``execute_test`` method which is passed an
-options dictionary containg the NT user parameters which apply to test
-execution, and the test should return the test results as a list of
-``lnt.testing.TestSamples`` objects.
-
-The ``execute_test`` method is passed the following options describing
-information about the module itself:
-
- * ``MODULENAME`` - The name of the module (primarily intended for use in
- producing well structured test names).
-
- * ``SRCROOT`` - The path to the modules source directory.
-
- * ``OBJROOT`` - The path to a directory the module should use for temporary
- output (build products). The directory is guaranteed to exist but is not
- guaranteed to be clean.
-
-The method is passed the following options which apply to how tests should be
-executed:
-
- * ``THREADS`` - The number of parallel processes to run during testing.
-
- * ``BUILD_THREADS`` - The number of parallel processes to use while building
- tests (if applicable).
-
-The method is passed the following options which specify how and whether tests
-should be executed remotely. If any of these parameters are present then all are
-guaranteed to be present.
-
- * ``REMOTE_HOST`` - The host name of the remote machine to execute tests on.
-
- * ``REMOTE_USER`` - The user to log in to the remote machine as.
-
- * ``REMOTE_PORT`` - The port to connect to the remote machine on.
-
- * ``REMOTE_CLIENT`` - The ``rsh`` compatible client to use to connect to the
- remote machine with.
-
-The method is passed the following options which specify how to build the tests:
-
- * ``CC`` - The C compiler command to use.
-
- * ``CXX`` - The C++ compiler command to use.
-
- * ``CFLAGS`` - The compiler flags to use for building C code.
-
- * ``CXXFLAGS`` - The compiler flags to use for building C++ code.
-
-The method is passed the following optional parameters which specify the
-environment to use for various commands:
-
- * ``COMPILE_ENVIRONMENT_OVERRIDES`` [optional] - If given, a ``env`` style list
- of environment overrides to use when compiling.
-
- * ``LINK_ENVIRONMENT_OVERRIDES`` [optional] - If given, a ``env`` style list of
- environment overrides to use when linking.
-
- * ``EXECUTION_ENVIRONMENT_OVERRIDES`` [optional] - If given, a ``env`` style list of
- environment overrides to use when executing tests.
-
-For more information, see the example tests in the LLVM test-suite repository
-under the ``LNT/Examples`` directory.
Removed: zorg/trunk/lnt/docs/todo.rst
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/todo.rst?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/todo.rst (original)
+++ zorg/trunk/lnt/docs/todo.rst (removed)
@@ -1,252 +0,0 @@
-.. _todo:
-
-TODO
-====
-
-This is a TODO list of major and minor features for LNT.
-
-Major Features
---------------
-
-Too many to name!
-
-Minor Features
---------------
-
-Optimize test distribution format for common cases.
-
- 1. We should left the test info higher in the format, so that it can easily be
- shared by a large number of samples.
-
- 2. We should specify test samples in an array instead of objects, to avoid
- requiring repetitive 'Name' and 'Data' keys.
-
- 3. We should support [test, sample] in addition to [test, [sample, ...]].
-
- 4. If we changed the .success marker to be .failure, then having [test] be a
- shortcut for [test, 0] would be fairly nice, and in the visualization we would
- automatically get the right defaulting for absent tests.
-
-These changes would significantly compact the archive format, which improves
-performance across the board.
-
-Other stuff:
-
- 1. We should find ways to manage the SQLite databases better. Currently we:
-
- o Could benefit from having LNT manage when to run ANALYZE.
-
- o Could benefit from making LNT handle setting some of the page size
- pragmas, at some point.
-
- o Could benefit from finding a way to have LNT VACUUM, although this can be
- very expensive.
-
- 2. We should get an LNT buildbot up somewhere.
-
- 3. We should start defining performance tests for LNT itself, and have LNT
- monitor them (of course). Probably best integrated into the LNT buildbot.
-
-v0.4 Redesign
--------------
-
- - Kill parameter sets.
-
- o Is this actual worth doing? If we just bring up dual models for a while
- there is no reason to spend time on the old model.
-
- o Counter argument is that it might make migrating code more simple.
-
- o Another counter argument is that we want to remove these from some places
- that just migrating the schema won't touch (like the submission format).
-
- - Add schema version to test submission format (for future future proofing).
-
- - Schema redesign:
-
- o Plan on doing a dual submission model for bringup purposes.
-
- o Part of the planned schema design is to have proper attributes for the rows
- in the run table. Should we moved to a typed model?
-
- o See below.
-
- - Open question: UI rewrite at the same time? We are going to have to do a
- metric ton of rewrite work to adapt to the new schema anyway.
-
- - Open question: Introduce Mongo dependency? I would rather not, from a
- dependency perspective, but I also would really like to have mongo
- available. Also I am almost certainly going to want to move llvmlab to using
- mongo so it is an effective dependency on the server. Having it as a
- dependency for local use seems sucky though. Shame there isn't a local
- isolated mongo-as-a-library client.
-
- o CONCLUSION: Not for v0.4.
-
- - Run order redesign?
-
- o The current run order design is really unfortunate. It would be much better
- if we could provide a way for users to report all of the important
- revisions. Unfortunately, this places a lot of requirements on the server
- for understanding all the repositories, especially the git based ones.
-
-Schema Resign
-~~~~~~~~~~~~~
-
-Primary Purpose
-+++++++++++++++
-
-The primary purpose of the schema redesign is to eliminate what Bill Karwin
-calls the "Entity-Attribute-Value" anti-pattern in his book SQL
-Antipatterns. This is where we basically store arbitrary dictionaries of
-attributes in the various Info tables, which I have since discovered is a
-terrible idea for all the reasons Karwin articulates.
-
-The particular difficulty with following this within the other LNT design goals
-is that we still have the desire to allow users to report very flexible
-structured data.
-
-Currently, the best idea to have to resolve this conflict is that we will
-construct tables on the fly. I suspect many SQL experts might also regard that
-as an anti- or scary- pattern, but it seems like the best option to me. If one
-thinks of LNT as trying to be a general purpose product, then the idea of
-creating tables is notionally related to the specialization (instantiation) of
-the general purpose product for one's particular test suites.
-
-However, we certainly also want to limit the degree to which we create or modify
-tables. Having the test submission mechanism having to modify the table any time
-a user reported a new key would certainly be superflous.
-
-Thus, my current plan is to follow what Karwin calls the "Semistructured Data"
-pattern. What we will do is add an arbitrary blob field (to be JSON or perhaps
-BSON data). We will basically expect that any fields that are required (or
-almost always used) to be put in the actual table schema, but any time we see
-additional fields we can handle them by just placing them in the BLOB field.
-
-We will probably allow users to migrate fields to and from the schema. This
-gives us a good amount of flexibility (and an easy path to eliminate the JSON
-field if need be). We may require users to do this before they can do anything
-but just see the data associated with a run. For example, if they want to use
-one of the reported fields as an axis.
-
-Secondary Purpose
-+++++++++++++++++
-
-One additional painful part of the current schema design is that we use separate
-tests to represent the status aspect of other tests. This is nice and flexible,
-but makes the UI code very painful. Especially, some things like making a graph
-of the test values for all tests which passed become incredibly complex.
-
-The plan is to handle this problem by also constructing the Sample tables on the
-fly, and allowing the test suite to define the keys that go into a sample. Thus,
-any one sample will reflect *all* of the statistics that were reported for that
-test.
-
-This has many advantages:
- * We can start using types for the columns (e.g., easy to start reporting hash
- of produced binaries, for example).
- * The performance impact of adding new sample values should be much lower than
- in the old schema.
- * The database explicitly models the fact that sample values were produced from
- a single run, whereas before sample values and status could not technically
- be correlated correctly.
- * We eliminate the need to mangle subtest/test result key information into the
- test name, which is a big win.
-
-The has some disadvantages, however:
- * Poorly models suites where different tests reported different test results.
- * Poorly models situations where we want to support a large number of test
- results and that set might change frequently or dynamically (e.g., suppose we
- reported one test for each LLVM Statistic counter).
-
-However, at least for our current usage this scheme should work well enough and
-be **substantially** faster than the old scheme.
-
-This will probably mean that we have to do a bit of work (similar to what we had
-to do for parameter sets) to handle what the UI for this should look
-like. However, we should have better infrastructure for defining how the UI
-should handle things in the metadata.
-
-Other Antipatterns In Use
-+++++++++++++++++++++++++
-
-The "status kind" field uses and suffers from a view of the problems mentioned
-in Chapter 11. 31 Flavors. It would probably be good to move being foreign key
-references into an auxiliary table. This also reduces some of my reservations
-about making that field required / part of every test.
-
-Conveniently, this can also be done without actually changing the status kind
-values, which makes migration easy.
-
-Proposed Concepts
-~~~~~~~~~~~~~~~~~
-
-Test Suite
-++++++++++
-
-The major high level concept in the new schema is that of a test suite. This is
-designed to correspond to some group of tests which users would browse
-independently. Examples would be things like "LLVM Test Suite" or "PlumHall" or
-"GCC Test Suite".
-
-The test suite is the place that defines information about what is being tested
-and the metadata on what information is reported by the runs and the tests.
-
-Parameter Sets
-++++++++++++++
-
-This concept will be removed. Instead, the idea is that all the information
-about how a test was run lives at the Run level. This corresponds much more to
-how LNT is currently primarily used in production. Although there were tests
-like the Clang tests which made use of parameter sets, the theory is that we
-should only have one place for parameters, and a lot of them have to be in the
-Run. The goal is that the UI will be enhanced to better support situations when
-one group of tests was split up into multiple Runs. We should also eventually
-support submitting multiple runs in one submission.
-
-Proposed Migration Path
-~~~~~~~~~~~~~~~~~~~~~~~
-
-I would prefer to not do any coordinated changes to the non-DB side of things
-while effecting the database changes (and generally, I like the test submission
-format to be fairly stable).
-
-For the most part, I think this can be done relatively easily, but there are a
-few places that will require special care.
-
- - For parameter sets (TestInfo), we just discard them and reject any attempts
- to use them.
-
- - For MachineInfo, we just turn them into the Parameters BLOB or put them in
- the appropriate column.
-
- - For RunInfo, we just turn them into the Parameters BLOB or put them in the
- appropriate column.
-
- We will need to extract the run_order value and put it into the order table.
-
- This points out that we probably want the order table to be UNIQUE across all
- entries. Can we do that in SQLite3?
-
- - For the sample status field, we will need to convert the existing format,
- which encodes samples via multiple tests, into the new format.
-
- This is the one area where I really don't want to change the test data
- serialization format, so maybe this is even the right long term approach.
-
- In the new model of collapsing samples into a single row, this is going to
- mean that we will need to assume that tests mangled into subtest names are
- specified in the same order.
-
-Unaddressed Issues
-~~~~~~~~~~~~~~~~~~
-
-There are couple design problems in the current system which I *am not*
-intending to address as part of the v0.4 changes.
-
-Machine Naming
-++++++++++++++
-
-LNT currently allows a "name" for machines, which is very arbitrary. It would be
-nice to eliminate this field completely, but we should probably eliminate the
-name from the UI completely first, and make sure that is workable.
Removed: zorg/trunk/lnt/docs/tools.rst
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/docs/tools.rst?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/docs/tools.rst (original)
+++ zorg/trunk/lnt/docs/tools.rst (removed)
@@ -1,68 +0,0 @@
-.. _tools:
-
-The ``lnt`` Tool
-================
-
-The ``lnt`` command line utility provides the following commands for client-side
-use and server-side use. The following is a list of commands and the most
-importat options, use ``lnt <toolname> --help`` for more information on any
-particular tool.
-
-Client-Side Tools
------------------
-
- ``lnt checkformat [<file>]``
- Checks the syntax of an LNT test report file. In addition to verifying that
- LNT can read the raw format (e.g., JSON or property list), this also creates
- a temporary in-memory database instance and ensures that the test report
- file can be imported correctly.
-
- If run without arguments, this expects to read the input file from ``stdin``.
-
- ``lnt convert <input path> [<output path>]``
- Convert between LNT test report formats. By default, this will convert to
- the property list format. You can use ``-`` for either the input (to read
- from ``stdin) or the output (to write to ``stdout``).
-
- ``lnt submit [--commit=1] <server url> <file>+``
- Submits one or more files to the given server. The ``<server url>`` should
- be the url to the actual ``submitRun`` page on the server; the database
- being submitted to is effectively a part of this URL.
-
- By default, this only submits the report to the server but does not actually
- commit the data. When testing, you should verify that the server returns an
- acceptable response before committing runs.
-
- ``lnt showtests``
- List available built-in tests. See the :ref:`tests` documentation for more
- details on this tool.
-
- ``lnt runtest [<run options>] <test name> ... test arguments ...``
- Run a built-in test. See the :ref:`tests` documentation for more
- details on this tool.
-
-Server-Side Tools
------------------
-
-The following tools are used to interact with an LNT server:
-
- ``lnt create <path>``
- Creates a new LNT server instance. This command has a number of parameters
- to tweak the generated server, but they can all be modified after the fact
- in the LNT configuration file.
-
- The default server will have one database named *default*.
-
- ``lnt createdb <path>``
- Creates a new LNT sqlite3 database at the specified path.
-
- ``lnt import <path | config file> <file>+``
- Import an LNT data file into a database. You can use ``--database`` to
- select the database to write to. Note that by default this will also
- generate report emails if enabled in the configuration, you can use
- ``--no-email`` to disable this.
-
- ``lnt runserver <path | config file>``
- Start the LNT server using a development WSGI server. Additional options can
- be used to control the server host and port, as well as useful development
- features such as automatic reloading.
Removed: zorg/trunk/lnt/examples/functions.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/examples/functions.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/examples/functions.py (original)
+++ zorg/trunk/lnt/examples/functions.py (removed)
@@ -1,56 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Simple example of a test generator which just produces data on some mathematical
-functions, keyed off of the current time.
-"""
-
-import sys, time
-import math, random
-
-from lnt.testing import *
-
-def main():
- from optparse import OptionParser
- parser = OptionParser("usage: %prog [options] [output]")
- opts,args = parser.parse_args()
-
- if len(args) == 0:
- output = '-'
- elif len(args) == 1:
- output, = args
- else:
- parser.error("invalid number of arguments")
-
- if output == '-':
- output = sys.stdout
- else:
- output = open(output,'w')
-
- offset = math.pi/5
- delay = 120.
-
- machine = Machine('Mr. Sin Wave', info = { 'delay' : delay })
-
- start = time.time()
-
- run = Run(start, start, info = { 't' : start,
- 'tag' : 'simple',
- 'run_order' : 1 })
- tests = [TestSamples('simple.%s' % name,
- [fn(start*2*math.pi / delay + j * offset)],
- info = { 'offset' : j })
- for j in range(5)
- for name,fn in (('sin',math.sin),
- ('cos',math.cos),
- ('random',lambda x: random.random()))]
-
- report = Report(machine, run, tests)
-
- print >>output, report.render()
-
- if output is not sys.stderr:
- output.close()
-
-if __name__ == '__main__':
- main()
Removed: zorg/trunk/lnt/lnt/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/__init__.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/__init__.py (original)
+++ zorg/trunk/lnt/lnt/__init__.py (removed)
@@ -1,6 +0,0 @@
-__author__ = 'Daniel Dunbar'
-__email__ = 'daniel at zuster.org'
-__versioninfo__ = (0, 4, 0)
-__version__ = '.'.join(map(str, __versioninfo__)) + 'dev'
-
-__all__ = []
Removed: zorg/trunk/lnt/lnt/db/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/db/__init__.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/db/__init__.py (original)
+++ zorg/trunk/lnt/lnt/db/__init__.py (removed)
@@ -1 +0,0 @@
-__all__ = []
Removed: zorg/trunk/lnt/lnt/db/perfdb.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/db/perfdb.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/db/perfdb.py (original)
+++ zorg/trunk/lnt/lnt/db/perfdb.py (removed)
@@ -1,495 +0,0 @@
-#!/usr/bin/python
-
-###
-# SQLAlchemy database layer
-
-import sqlalchemy
-import sqlalchemy.ext.declarative
-import sqlalchemy.orm
-from sqlalchemy import *
-from sqlalchemy.schema import Index
-from sqlalchemy.orm import relation, backref
-from sqlalchemy.orm.collections import attribute_mapped_collection
-
-Base = sqlalchemy.ext.declarative.declarative_base()
-class Revision(Base):
- __tablename__ = 'Revision'
-
- id = Column("ID", Integer, primary_key=True)
- name = Column("Name", String(256))
- number = Column("Number", Integer)
-
- def __init__(self, name, number):
- self.name = name
- self.number = number
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__, (self.name, self.number))
-
-class Machine(Base):
- __tablename__ = 'Machine'
-
- id = Column("ID", Integer, primary_key=True)
- name = Column("Name", String(256))
- number = Column("Number", Integer)
-
- info = relation('MachineInfo',
- collection_class=attribute_mapped_collection('key'),
- backref=backref('machine'))
-
- def __init__(self, name, number):
- self.name = name
- self.number = number
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__, (self.name, self.number))
-
-class MachineInfo(Base):
- __tablename__ = 'MachineInfo'
-
- id = Column("ID", Integer, primary_key=True)
- machine_id = Column("Machine", Integer, ForeignKey('Machine.ID'))
- key = Column("Key", String(256))
- value = Column("Value", String(4096))
-
- def __init__(self, machine, key, value):
- self.machine = machine
- self.key = key
- self.value = value
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__,
- (self.machine, self.key, self.value))
-
-class Run(Base):
- __tablename__ = 'Run'
-
- id = Column("ID", Integer, primary_key=True)
- machine_id = Column("MachineID", Integer, ForeignKey('Machine.ID'))
- start_time = Column("StartTime", DateTime)
- end_time = Column("EndTime", DateTime)
-
- machine = relation(Machine)
-
- info = relation('RunInfo',
- collection_class=attribute_mapped_collection('key'),
- backref=backref('run'))
-
- def __init__(self, machine, start_time, end_time):
- self.machine = machine
- self.start_time = start_time
- self.end_time = end_time
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__,
- (self.machine, self.start_time, self.end_time))
-
-class RunInfo(Base):
- __tablename__ = 'RunInfo'
-
- id = Column("ID", Integer, primary_key=True)
- run_id = Column("Run", Integer, ForeignKey('Run.ID'))
- key = Column("Key", String(256), index=True)
- value = Column("Value", String(4096))
-
- def __init__(self, run, key, value):
- self.run = run
- self.key = key
- self.value = value
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__,
- (self.run, self.key, self.value))
-
-class Test(Base):
- __tablename__ = 'Test'
-
- id = Column("ID", Integer, primary_key=True)
- name = Column("Name", String(512))
-
- info = relation('TestInfo',
- collection_class=attribute_mapped_collection('key'),
- backref=backref('test'))
-
- def __init__(self, name):
- self.name = name
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__,
- (self.name,))
-
- def get_parameter_set(self):
- items = [(k,v.value) for k,v in self.info.items()]
- items.sort()
- return tuple(items)
-
-class TestInfo(Base):
- __tablename__ = 'TestInfo'
-
- id = Column("ID", Integer, primary_key=True)
- test_id = Column("Test", Integer, ForeignKey('Test.ID'))
- key = Column("Key", String(256))
- value = Column("Value", String(4096))
-
- def __init__(self, test, key, value):
- self.test = test
- self.key = key
- self.value = value
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__,
- (self.test, self.key, self.value))
-
-class Sample(Base):
- __tablename__ = 'Sample'
-
- id = Column("ID", Integer, primary_key=True)
- run_id = Column("RunID", Integer, ForeignKey('Run.ID'), index=True)
- test_id = Column("TestID", Integer, ForeignKey('Test.ID'), index=True)
- value = Column("Value", Float)
-
- run = relation(Run)
- test = relation(Test)
-
- def __init__(self, run, test, value):
- self.run = run
- self.test = test
- self.value = value
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__,
- (self.run, self.test, self.value))
-
-# Define an additonal index on (RunID, TestID).
-Index("ix_Sample_RunID_TestID", Sample.run_id, Sample.test_id)
-
-###
-# PerfDB wrapper, to avoid direct SA dependency when possible.
-
-def info_eq(a, b):
- a = list(a)
- b = list(b)
- a.sort()
- b.sort()
- return a == b
-
-class PerfDB:
- def __init__(self, path, echo=False):
- if (not path.startswith('mysql://') and
- not path.startswith('sqlite://')):
- path = 'sqlite:///' + path
- self.path = path
- self.engine = sqlalchemy.create_engine(path, echo=echo)
-
- # Create the tables in case this is a new database.
- Base.metadata.create_all(self.engine)
-
- self.session = sqlalchemy.orm.sessionmaker(self.engine)()
- self.modified_machine = self.modified_run = self.modified_test = False
-
- # Make sure revision numbers exists.
- for r in ("Machine","MachineInfo","Run","RunInfo","Test","TestInfo"):
- self.get_revision(r)
- self.commit()
-
- # Add shortcut alias.
- self.query = self.session.query
-
- def get_revision(self, name):
- for r in self.session.query(Revision).filter_by(name=name):
- return r
- r = Revision(name, 0)
- self.session.add(r)
- return r
- def get_revision_number(self, name):
- return self.get_revision(name).number
-
- def machines(self, name=None):
- q = self.session.query(Machine)
- if name:
- q = q.filter_by(name=name)
- return q
-
- def tests(self, name=None):
- q = self.session.query(Test)
- if name:
- q = q.filter_by(name=name)
- return q
-
- def runs(self, machine=None):
- q = self.session.query(Run)
- if machine:
- q = q.filter_by(machine=machine)
- return q
-
- def samples(self, run=None, test=None):
- q = self.session.query(Sample)
- if run:
- q = q.filter_by(run_id=run.id)
- if test:
- q = q.filter_by(test_id=test.id)
- return q
-
- def getNumMachines(self):
- return self.machines().count()
-
- def getNumRuns(self):
- return self.runs().count()
-
- def getNumTests(self):
- return self.tests().count()
-
- def getNumSamples(self):
- return self.samples().count()
-
- def getMachine(self, id):
- return self.session.query(Machine).filter_by(id=id).one()
-
- def getRun(self, id):
- return self.session.query(Run).filter_by(id=id).one()
-
- def getTest(self, id):
- return self.session.query(Test).filter_by(id=id).one()
-
- def getOrCreateMachine(self, name, info):
- # FIXME: Not really the right way...
- number = 1
- for m in self.machines(name=name):
- if info_eq([(i.key, i.value) for i in m.info.values()], info):
- return m,False
- number += 1
-
- # Make a new record
- m = Machine(name, number)
- m.info = dict((k,MachineInfo(m,k,v)) for k,v in info)
- self.session.add(m)
- self.modified_machine = True
- return m,True
-
- def getOrCreateTest(self, name, info):
- # FIXME: Not really the right way...
- for t in self.tests(name):
- if info_eq([(i.key, i.value) for i in t.info.values()], info):
- return t,False
-
- t = Test(name)
- t.info = dict((k,TestInfo(t,k,v)) for k,v in info)
- self.session.add(t)
- self.modified_test = True
- return t,True
-
- def getOrCreateRun(self, machine, start_time, end_time, info):
- from datetime import datetime
- start_time = datetime.strptime(start_time,
- "%Y-%m-%d %H:%M:%S")
- end_time = datetime.strptime(end_time,
- "%Y-%m-%d %H:%M:%S")
-
- # FIXME: Not really the right way...
- for r in self.session.query(Run).filter_by(machine=machine):
- # FIXME: Execute this filter in SQL, but resolve the
- # normalization issue w.r.t. SQLAlchemy first. I think we
- # may be running afoul of SQLite not normalizing the
- # datetime. If I don't do this then sqlalchemy issues a
- # query in the format YYYY-MM-DD HH:MM:SS.ssss which
- # doesn't work.
- if r.start_time != start_time or r.end_time != end_time:
- continue
- if info_eq([(i.key, i.value) for i in r.info.values()], info):
- return r,False
-
- # Make a new record
- r = Run(machine, start_time, end_time)
- r.info = dict((k,RunInfo(r,k,v)) for k,v in info)
- self.session.add(r)
- self.modified_run = True
- return r,True
-
- def addSample(self, run, test, value):
- s = Sample(run, test, value)
- self.session.add(s)
- return s
-
- def addSamples(self, samples):
- """addSamples([(run_id, test_id, value), ...]) -> None
-
- Batch insert a list of samples."""
-
- # Flush to keep session consistent.
- self.session.flush()
-
- for run_id,test_id,value in samples:
- q = Sample.__table__.insert().values(RunID = run_id,
- TestID = test_id,
- Value = value)
- self.session.execute(q)
-
- def commit(self):
- if self.modified_machine:
- self.get_revision("Machine").number += 1
- self.get_revision("MachineInfo").number += 1
- if self.modified_run:
- self.get_revision("Run").number += 1
- self.get_revision("RunInfo").number += 1
- if self.modified_test:
- self.get_revision("Test").number += 1
- self.get_revision("TestInfo").number += 1
- self.session.commit()
- self.modified_machine = self.modified_test = self.modified_run = False
-
- def rollback(self):
- self.session.rollback()
- self.modified_machine = self.modified_test = self.modified_run = False
-
- def importDataFromDict(self, data, config=None):
- return importDataFromDict(self, data)
-
- def get_db_summary(self):
- import perfdbsummary
- return perfdbsummary.PerfDBSummary.fromdb(self)
-
-def importDataFromDict(db, data):
- # FIXME: Validate data
- machineData = data['Machine']
- runData = data['Run']
- testsData = data['Tests']
-
- # Get the machine
- # FIXME: Validate machine
- machine,_ = db.getOrCreateMachine(machineData['Name'],
- machineData['Info'].items())
-
- # Accept 'Time' as an alias for 'Start Time'
- if 'Start Time' not in runData and 'Time' in runData:
- import time
- t = time.strptime(runData['Time'],
- "%a, %d %b %Y %H:%M:%S -0700 (PDT)")
- runData['Start Time'] = time.strftime('%Y-%m-%d %H:%M', t)
-
- # Create the run.
- run,inserted = db.getOrCreateRun(machine,
- runData.get('Start Time',''),
- runData.get('End Time',''),
- runData.get('Info',{}).items())
- if not inserted:
- return False,run
-
- # Batch load the set of tests instead of repeatedly querying to unique.
- #
- # FIXME: Add explicit config object.
- test_info = {}
- for id,k,v in db.session.query(TestInfo.test_id, TestInfo.key,
- TestInfo.value):
- info = test_info[id] = test_info.get(id,{})
- info[str(k)] = str(v)
-
- testMap = {}
- for test_id,test_name in db.session.query(Test.id, Test.name):
- info = test_info.get(test_id,{}).items()
- info.sort()
- testMap[(str(test_name),tuple(info))] = test_id
-
- # Create the tests up front, so we can resolve IDs.
- test_ids = []
- late_ids = []
- for i,testData in enumerate(testsData):
- name = str(testData['Name'])
- info = [(str(k),str(v)) for k,v in testData['Info'].items()]
- info.sort()
- test_id = testMap.get((name,tuple(info)))
- if test_id is None:
- test,created = db.getOrCreateTest(testData['Name'],info)
- late_ids.append((i,test))
- test_ids.append(test_id)
-
- # Flush now to resolve test and run ids.
- #
- # FIXME: Surely there is a cleaner way to handle this?
- db.session.flush()
-
- if late_ids:
- for i,t in late_ids:
- test_ids[i] = t.id
-
- db.addSamples([(run.id, test_id, value)
- for test_id,testData in zip(test_ids, testsData)
- for value in testData['Data']])
- return True,run
-
-def test_sa_db(dbpath):
- if not dbpath.startswith('mysql://'):
- dbpath = 'sqlite:///' + dbpath
- engine = sqlalchemy.create_engine(dbpath)
-
- Session = sqlalchemy.orm.sessionmaker(engine)
- Session.configure(bind=engine)
-
- session = Session()
-
- m = session.query(Machine).first()
- print m
- print m.info
-
- r = session.query(Run).first()
- print r
- print r.info
-
- t = session.query(Test)[20]
- print t
- print t.info
-
- s = session.query(Sample)[20]
- print s
-
- import time
- start = time.time()
- print
- q = session.query(Sample)
- q = q.filter(Sample.run_id == 994)
- print
- res = session.execute(q)
- print res
- N = 0
- for row in res:
- if N == 1:
- print row
- N += 1
- print N, time.time() - start
- print
-
- start = time.time()
- N = 0
- for row in q:
- if N == 1:
- print row
- N += 1
- print N, time.time() - start
-
-def main():
- global opts
- from optparse import OptionParser
- parser = OptionParser("usage: %prog dbpath")
- opts,args = parser.parse_args()
-
- if len(args) != 1:
- parser.error("incorrect number of argments")
-
- dbpath, = args
-
- # Test the SQLAlchemy layer.
- test_sa_db(dbpath)
-
- # Test the PerfDB wrapper.
- db = PerfDB(dbpath)
-
- print "Opened %r" % dbpath
-
- for m in db.machines():
- print m
- for r in db.runs(m):
- print ' run - id:%r, start:%r,'\
- ' # samples: %d.' % (r.id, r.start_time,
- db.samples(run=r).count())
-
-if __name__ == '__main__':
- main()
Removed: zorg/trunk/lnt/lnt/db/perfdbsummary.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/db/perfdbsummary.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/db/perfdbsummary.py (original)
+++ zorg/trunk/lnt/lnt/db/perfdbsummary.py (removed)
@@ -1,241 +0,0 @@
-"""
-Classes for caching metadata about a PerfDB instance.
-"""
-
-from lnt.db.perfdb import Run, RunInfo, Sample, Test
-
-class SuiteSummary:
- def __init__(self, name, path):
- self.name = name
- self.path = path
-
-class PerfDBSummary:
- @staticmethod
- def fromdb(db):
- revision = db.get_revision_number("Run")
-
- # Look for all the run tags and use them to identify the available
- # suites.
- q = db.session.query(RunInfo.value.distinct())
- q = q.filter(RunInfo.key == "tag")
-
- suites = [SuiteSummary("Nightlytest", ("nightlytest",))]
- for tag, in q:
- if tag == 'nightlytest':
- continue
- suites.append(SuiteSummary(tag, ("simple",tag)))
-
- suites.sort(key=lambda s: s.name)
- return PerfDBSummary(revision, suites)
-
- def __init__(self, revision, suites):
- self.revision = revision
- self.suites = suites
-
- def is_up_to_date(self, db):
- return (not db.modified_run and
- self.revision == db.get_revision_number("Run"))
-
-class SimpleSuiteSummary(object):
- @staticmethod
- def fromdb(db, tag):
- revision = db.get_revision_number("Test")
-
- # Find all test names.
- q = db.session.query(Test)
- q = q.filter(Test.name.startswith(tag))
- tests = list(q)
-
- # Collect all the test data.
- test_names = set()
- parameter_sets = set()
- test_id_map = {}
- for t in tests:
- name = t.name.split('.', 1)[1]
-
- key = t.get_parameter_set()
-
- parameter_sets.add(key)
- test_id_map[(name, key)] = t.id
-
- if name.endswith('.success'):
- test_name = name.rsplit('.', 1)[0]
- elif name.endswith('.status'):
- test_name = name.rsplit('.', 1)[0]
- else:
- test_name = name
-
- test_names.add(test_name)
-
- # Order the test names.
- test_names = list(test_names)
- test_names.sort()
-
- # Collect the set of all parameter keys.
- parameter_keys = list(set([k for pset in parameter_sets
- for k,v in pset]))
- parameter_keys.sort()
-
- # Order the parameter sets and convert to dictionaries.
- parameter_sets = list(parameter_sets)
- parameter_sets.sort()
-
- return SimpleSuiteSummary(revision, tag, test_names,
- test_id_map, parameter_keys, parameter_sets)
-
- def __init__(self, revision, tag, test_names,
- test_id_map, parameter_keys, parameter_sets):
- self.revision = revision
- self.tag = tag
- self.test_names = test_names
- self.test_id_map = test_id_map
- self.parameter_keys = parameter_keys
- self.parameter_sets = parameter_sets
- self.parameter_maps = map(dict, parameter_sets)
- self.test_info_map = dict([(v,k) for k,v in test_id_map.items()])
-
- def is_up_to_date(self, db):
- return (not db.modified_test and
- self.revision == db.get_revision_number("Test"))
-
- def get_test_names_in_runs(self, db, runs):
- # Load the distinct test ids for these runs.
- test_ids = db.session.query(Sample.test_id)\
- .filter(Sample.run_id.in_(runs)).distinct()
-
- # Get the test names for the test ids.
- test_names = [self.test_info_map[id][0]
- for id, in test_ids]
-
- # Limit to the tests we actually report.
- test_names = list(set(test_names) & set(self.test_names))
- test_names.sort()
-
- return test_names
-
-_cache = {}
-def get_simple_suite_summary(db, tag):
- key = (db.path, tag)
- entry = _cache.get(key)
- if entry is None or not entry.is_up_to_date(db):
- _cache[key] = entry = SimpleSuiteSummary.fromdb(db, tag)
- return entry
-
-class SimpleSuiteRunSummary(object):
- _cache = {}
- @staticmethod
- def get_summary(db, tag):
- key = (db.path, tag)
- entry = SimpleSuiteRunSummary._cache.get(key)
- if entry is None or not entry.is_up_to_date(db):
- entry = SimpleSuiteRunSummary.fromdb(db, tag)
- SimpleSuiteRunSummary._cache[key] = entry
- return entry
-
- @staticmethod
- def fromdb(db, tag):
- revision = db.get_revision_number("RunInfo")
-
- # Find all run_orders for runs with this tag, ordered by run time so
- # that runs are ordered by both (run_order, time) in the final ordering.
- all_run_orders = db.session.query(RunInfo.value, RunInfo.run_id,
- Run.machine_id).\
- join(Run).\
- order_by(Run.start_time.desc()).\
- filter(RunInfo.key == "run_order").\
- filter(RunInfo.run_id.in_(
- db.session.query(RunInfo.run_id).\
- filter(RunInfo.key == "tag").\
- filter(RunInfo.value == tag).subquery()))
- all_run_orders = list(all_run_orders)
-
- order_by_run = dict((run_id,order)
- for order,run_id,machine_id in all_run_orders)
- machine_id_by_run = dict((run_id,machine_id)
- for order,run_id,machine_id in all_run_orders)
-
- # Create a mapping from run_order to the available runs with that order.
- runs_by_order = {}
- for order,run_id,_ in all_run_orders:
- runs = runs_by_order.get(order)
- if runs is None:
- runs = runs_by_order[order] = []
- runs.append(run_id)
-
- # Get all available run_orders, in order.
- def order_key(run_order):
- return run_order
- run_orders = runs_by_order.keys()
- run_orders.sort(key = order_key)
- run_orders.reverse()
-
- # Construct the total order of runs.
- runs_in_order = []
- for order in run_orders:
- runs_in_order.extend(runs_by_order[order])
-
- return SimpleSuiteRunSummary(
- revision, tag, run_orders, runs_by_order, runs_in_order,
- order_by_run, machine_id_by_run)
-
- def __init__(self, revision, tag, run_orders, runs_by_order, runs_in_order,
- order_by_run, machine_id_by_run):
- self.revision = revision
- self.tag = tag
- self.run_orders = run_orders
- self.runs_by_order = runs_by_order
- self.runs_in_order = runs_in_order
- self.order_by_run = order_by_run
- self.machine_id_by_run = machine_id_by_run
- self.run_status_kinds = {}
-
- def is_up_to_date(self, db):
- return (not db.modified_run and
- self.revision == db.get_revision_number("RunInfo"))
-
- def contains_run(self, run_id):
- return run_id in self.machine_id_by_run
-
- def get_run_order(self, run_id):
- return self.order_by_run.get(run_id)
-
- def get_runs_on_machine(self, machine_id):
- return [k for k,v in self.machine_id_by_run.items()
- if v == machine_id]
-
- def get_run_ordered_index(self, run_id):
- try:
- return self.runs_in_order.index(run_id)
- except:
- print run_id
- print self.runs_in_order
- raise
-
- def get_previous_run_on_machine(self, run_id):
- machine_id = self.machine_id_by_run[run_id]
- index = self.get_run_ordered_index(run_id)
- for i in range(index + 1, len(self.runs_in_order)):
- id = self.runs_in_order[i]
- if machine_id == self.machine_id_by_run[id]:
- return id
-
- def get_next_run_on_machine(self, run_id):
- machine_id = self.machine_id_by_run[run_id]
- index = self.get_run_ordered_index(run_id)
- for i in range(0, index)[::-1]:
- id = self.runs_in_order[i]
- if machine_id == self.machine_id_by_run[id]:
- return id
-
- def get_run_status_kind(self, db, run_id):
- kind = self.run_status_kinds.get(run_id)
- if kind is None:
- # Compute the status kind by for .success tests in this run.
- if db.session.query(Test.name).join(Sample)\
- .filter(Sample.run_id == run_id)\
- .filter(Test.name.endswith(".success")).first() is not None:
- kind = False
- else:
- kind = True
- self.run_status_kinds[run_id] = kind
- return kind
Removed: zorg/trunk/lnt/lnt/db/runinfo.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/db/runinfo.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/db/runinfo.py (original)
+++ zorg/trunk/lnt/lnt/db/runinfo.py (removed)
@@ -1,259 +0,0 @@
-from lnt.util import stats
-from lnt.server.ui import util
-from lnt.db.perfdb import Sample
-from lnt.testing import PASS, FAIL, XFAIL
-
-REGRESSED = 'REGRESSED'
-IMPROVED = 'IMPROVED'
-UNCHANGED_PASS = 'UNCHANGED_PASS'
-UNCHANGED_FAIL = 'UNCHANGED_FAIL'
-
-class ComparisonResult:
- def __init__(self, cur_value, prev_value, delta, pct_delta, stddev, MAD,
- cur_failed, prev_failed, samples, stddev_mean = None,
- stddev_is_estimated = False):
- self.current = cur_value
- self.previous = prev_value
- self.delta = delta
- self.pct_delta = pct_delta
- self.stddev = stddev
- self.MAD = MAD
- self.failed = cur_failed
- self.prev_failed = prev_failed
- self.samples = samples
- self.stddev_mean = stddev_mean
- self.stddev_is_estimated = stddev_is_estimated
-
- def get_samples(self):
- return self.samples
-
- def get_test_status(self):
- # Compute the comparison status for the test success.
- if self.failed:
- if self.prev_failed:
- return UNCHANGED_FAIL
- else:
- return REGRESSED
- else:
- if self.prev_failed:
- return IMPROVED
- else:
- return UNCHANGED_PASS
-
- def get_value_status(self, confidence_interval=2.576,
- value_precision=0.0001, ignore_small=True):
- if self.current is None or self.previous is None:
- return None
-
- # Don't report value errors for tests which fail, or which just started
- # passing.
- #
- # FIXME: One bug here is that we risk losing performance data on tests
- # which flop to failure then back. What would be nice to do here is to
- # find the last value in a passing run, or to move to using proper keyed
- # reference runs.
- if self.failed:
- return UNCHANGED_FAIL
- elif self.prev_failed:
- return UNCHANGED_PASS
-
- # Ignore tests whose delt is too small relative to the precision we can
- # sample at; otherwise quantization means that we can't measure the
- # standard deviation with enough accuracy.
- if abs(self.delta) <= 2 * value_precision * confidence_interval:
- return UNCHANGED_PASS
-
- # Always ignore percentage changes below 1%, for now, we just don't have
- # enough time to investigate that level of stuff.
- if ignore_small and abs(self.pct_delta) < .01:
- return UNCHANGED_PASS
-
- # Always ignore changes with small deltas. There is no mathematical
- # basis for this, it should be obviated by appropriate statistical
- # checks, but practical evidence indicates what we currently have isn't
- # good enough (for reasons I do not yet understand).
- if ignore_small and abs(self.delta) < .01:
- return UNCHANGED_PASS
-
- # If we have a comparison window, then measure using a symmetic
- # confidence interval.
- if self.stddev is not None:
- is_significant = abs(self.delta) > (self.stddev *
- confidence_interval)
-
- # If the stddev is estimated, then it is also only significant if
- # the delta from the estimate mean is above the confidence interval.
- if self.stddev_is_estimated:
- is_significant &= (abs(self.current - self.stddev_mean) >
- self.stddev * confidence_interval)
-
- # If the delta is significant, return
- if is_significant:
- if self.delta < 0:
- return IMPROVED
- else:
- return REGRESSED
- else:
- return UNCHANGED_PASS
-
- # Otherwise, report any changes above 0.2%, which is a rough
- # approximation for the smallest change we expect "could" be measured
- # accurately.
- if abs(self.pct_delta) >= .002:
- if self.pct_delta < 0:
- return IMPROVED
- else:
- return REGRESSED
- else:
- return UNCHANGED_PASS
-
-class SimpleRunInfo:
- def __init__(self, db, test_suite_summary):
- self.db = db
- self.test_suite_summary = test_suite_summary
-
- self.sample_map = util.multidict()
- self.loaded_samples = set()
-
- def get_test_status_in_run(self, run_id, status_kind, test_name, pset):
- if status_kind == False: # .success
- status_name = test_name + '.success'
- status_test_id = self.test_suite_summary.test_id_map.get(
- (status_name, pset))
- run_status = self.sample_map.get((run_id, status_test_id))
- if run_status and int(run_status[0]) == 1:
- return PASS
- else:
- return FAIL
- else:
- status_name = test_name + '.status'
- status_test_id = self.test_suite_summary.test_id_map.get(
- (status_name, pset))
- run_status = self.sample_map.get((run_id, status_test_id))
- if not run_status:
- return PASS
- else:
- # FIXME: What to do about the multiple entries here. We could
- # start by just treating non-matching samples as errors.
- return int(run_status[0])
-
- def get_run_comparison_result(self, run, run_status_kind,
- compare_to, compare_to_status_kind,
- test_name, pset, comparison_window=[]):
- # Get the test.
- test_id = self.test_suite_summary.test_id_map.get((test_name, pset))
- if test_id is None:
- return ComparisonResult(run_value=None, prev_value=None, delta=None,
- pct_delta=None, stddev=None, MAD=None,
- cur_failed=None, prev_failed=None,
- samples=[])
-
- # Load the sample data for the current and previous runs and the
- # comparison window.
- if compare_to is None:
- compare_id = None
- else:
- compare_id = compare_to.id
- runs_to_load = set(comparison_window)
- runs_to_load.add(run.id)
- if compare_id is not None:
- runs_to_load.add(compare_id)
- self._load_samples_for_runs(runs_to_load)
-
- # Lookup the current and previous values.
- run_values = self.sample_map.get((run.id, test_id))
- prev_values = self.sample_map.get((compare_id, test_id))
-
- # Determine whether this (test,pset) passed or failed in the current and
- # previous runs.
- run_failed = prev_failed = False
- run_status = prev_status = None
- run_status = self.get_test_status_in_run(
- run.id, run_status_kind, test_name, pset)
- if compare_to:
- prev_status = self.get_test_status_in_run(
- compare_to.id, compare_to_status_kind, test_name, pset)
- else:
- prev_status = None
-
- # FIXME: Support XFAILs better.
- run_failed = run_status == FAIL
- prev_failed = prev_status == FAIL
-
- # Get the current and previous values.
- if run_values:
- run_value = min(run_values)
- else:
- run_value = None
- if prev_values:
- prev_value = min(prev_values)
- else:
- prev_value = None
-
- # If we have multiple values for this run, use that to estimate the
- # distribution.
- if run_values and len(run_values) > 1:
- stddev = stats.standard_deviation(run_values)
- MAD = stats.median_absolute_deviation(run_values)
- stddev_mean = stats.mean(run_values)
- stddev_is_estimated = False
- else:
- stddev = None
- MAD = None
- stddev_mean = None
- stddev_is_estimated = False
-
- # If we are missing current or comparison values we are done.
- if run_value is None or prev_value is None:
- return ComparisonResult(
- run_value, prev_value, delta=None,
- pct_delta = None, stddev = stddev, MAD = MAD,
- cur_failed = run_failed, prev_failed = prev_failed,
- samples = run_values)
-
- # Compute the comparison status for the test value.
- delta = run_value - prev_value
- if prev_value != 0:
- pct_delta = delta / prev_value
- else:
- pct_delta = 0.0
-
- # If we don't have an estimate for the distribution, attempt to "guess"
- # it using the comparison window.
- #
- # FIXME: We can substantially improve the algorithm for guessing the
- # noise level from a list of values. Probably better to just find a way
- # to kill this code though.
- if stddev is None:
- # Get all previous values in the comparison window, for passing
- # runs.
- #
- # FIXME: This is using the wrong status kind. :/
- prev_values = [v for run_id in comparison_window
- for v in self.sample_map.get((run_id, test_id), ())
- if self.get_test_status_in_run(
- run_id, run_status_kind, test_name, pset) == PASS]
- if prev_values:
- stddev = stats.standard_deviation(prev_values)
- MAD = stats.median_absolute_deviation(prev_values)
- stddev_mean = stats.mean(prev_values)
- stddev_is_estimated = True
-
- return ComparisonResult(run_value, prev_value, delta,
- pct_delta, stddev, MAD,
- run_failed, prev_failed, run_values,
- stddev_mean, stddev_is_estimated)
-
- def _load_samples_for_runs(self, runs):
- # Find the set of new runs to load.
- to_load = set(runs) - self.loaded_samples
- if not to_load:
- return
-
- q = self.db.session.query(Sample.value, Sample.run_id, Sample.test_id)
- q = q.filter(Sample.run_id.in_(to_load))
- for value,run_id,test_id in q:
- self.sample_map[(run_id,test_id)] = value
-
- self.loaded_samples |= to_load
-
Removed: zorg/trunk/lnt/lnt/external/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/external/__init__.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/external/__init__.py (original)
+++ zorg/trunk/lnt/lnt/external/__init__.py (removed)
@@ -1 +0,0 @@
-__all__ = []
Removed: zorg/trunk/lnt/lnt/external/stats/README.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/external/stats/README.txt?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/external/stats/README.txt (original)
+++ zorg/trunk/lnt/lnt/external/stats/README.txt (removed)
@@ -1,3 +0,0 @@
-This directory contains some useful statistics modules from Gary Strangman. They
-are more easily available inside SciPy, but we don't want to introduce a
-dependency onto SciPy solely for this functionality.
Removed: zorg/trunk/lnt/lnt/external/stats/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/external/stats/__init__.py?rev=156009&view=auto
==============================================================================
(empty)
Removed: zorg/trunk/lnt/lnt/external/stats/pstat.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/external/stats/pstat.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/external/stats/pstat.py (original)
+++ zorg/trunk/lnt/lnt/external/stats/pstat.py (removed)
@@ -1,1066 +0,0 @@
-# Copyright (c) 1999-2007 Gary Strangman; All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# Comments and/or additions are welcome (send e-mail to:
-# strang at nmr.mgh.harvard.edu).
-#
-"""
-pstat.py module
-
-#################################################
-####### Written by: Gary Strangman ###########
-####### Last modified: Dec 18, 2007 ###########
-#################################################
-
-This module provides some useful list and array manipulation routines
-modeled after those found in the |Stat package by Gary Perlman, plus a
-number of other useful list/file manipulation functions. The list-based
-functions include:
-
- abut (source,*args)
- simpleabut (source, addon)
- colex (listoflists,cnums)
- collapse (listoflists,keepcols,collapsecols,fcn1=None,fcn2=None,cfcn=None)
- dm (listoflists,criterion)
- flat (l)
- linexand (listoflists,columnlist,valuelist)
- linexor (listoflists,columnlist,valuelist)
- linedelimited (inlist,delimiter)
- lineincols (inlist,colsize)
- lineincustcols (inlist,colsizes)
- list2string (inlist)
- makelol(inlist)
- makestr(x)
- printcc (lst,extra=2)
- printincols (listoflists,colsize)
- pl (listoflists)
- printl(listoflists)
- replace (lst,oldval,newval)
- recode (inlist,listmap,cols='all')
- remap (listoflists,criterion)
- roundlist (inlist,num_digits_to_round_floats_to)
- sortby(listoflists,sortcols)
- unique (inlist)
- duplicates(inlist)
- writedelimited (listoflists, delimiter, file, writetype='w')
-
-Some of these functions have alternate versions which are defined only if
-Numeric (NumPy) can be imported. These functions are generally named as
-above, with an 'a' prefix.
-
- aabut (source, *args)
- acolex (a,indices,axis=1)
- acollapse (a,keepcols,collapsecols,sterr=0,ns=0)
- adm (a,criterion)
- alinexand (a,columnlist,valuelist)
- alinexor (a,columnlist,valuelist)
- areplace (a,oldval,newval)
- arecode (a,listmap,col='all')
- arowcompare (row1, row2)
- arowsame (row1, row2)
- asortrows(a,axis=0)
- aunique(inarray)
- aduplicates(inarray)
-
-Currently, the code is all but completely un-optimized. In many cases, the
-array versions of functions amount simply to aliases to built-in array
-functions/methods. Their inclusion here is for function name consistency.
-"""
-
-## CHANGE LOG:
-## ==========
-## 07-11-26 ... edited to work with numpy
-## 01-11-15 ... changed list2string() to accept a delimiter
-## 01-06-29 ... converted exec()'s to eval()'s to make compatible with Py2.1
-## 01-05-31 ... added duplicates() and aduplicates() functions
-## 00-12-28 ... license made GPL, docstring and import requirements
-## 99-11-01 ... changed version to 0.3
-## 99-08-30 ... removed get, getstrings, put, aget, aput (into io.py)
-## 03/27/99 ... added areplace function, made replace fcn recursive
-## 12/31/98 ... added writefc function for ouput to fixed column sizes
-## 12/07/98 ... fixed import problem (failed on collapse() fcn)
-## added __version__ variable (now 0.2)
-## 12/05/98 ... updated doc-strings
-## added features to collapse() function
-## added flat() function for lists
-## fixed a broken asortrows()
-## 11/16/98 ... fixed minor bug in aput for 1D arrays
-##
-## 11/08/98 ... fixed aput to output large arrays correctly
-
-import stats # required 3rd party module
-import string, copy
-from types import *
-
-__version__ = 0.4
-
-###=========================== LIST FUNCTIONS ==========================
-###
-### Here are the list functions, DEFINED FOR ALL SYSTEMS.
-### Array functions (for NumPy-enabled computers) appear below.
-###
-
-def abut (source,*args):
- """
-Like the |Stat abut command. It concatenates two lists side-by-side
-and returns the result. '2D' lists are also accomodated for either argument
-(source or addon). CAUTION: If one list is shorter, it will be repeated
-until it is as long as the longest list. If this behavior is not desired,
-use pstat.simpleabut().
-
-Usage: abut(source, args) where args=any # of lists
-Returns: a list of lists as long as the LONGEST list past, source on the
- 'left', lists in <args> attached consecutively on the 'right'
-"""
-
- if type(source) not in [ListType,TupleType]:
- source = [source]
- for addon in args:
- if type(addon) not in [ListType,TupleType]:
- addon = [addon]
- if len(addon) < len(source): # is source list longer?
- if len(source) % len(addon) == 0: # are they integer multiples?
- repeats = len(source)/len(addon) # repeat addon n times
- origadd = copy.deepcopy(addon)
- for i in range(repeats-1):
- addon = addon + origadd
- else:
- repeats = len(source)/len(addon)+1 # repeat addon x times,
- origadd = copy.deepcopy(addon) # x is NOT an integer
- for i in range(repeats-1):
- addon = addon + origadd
- addon = addon[0:len(source)]
- elif len(source) < len(addon): # is addon list longer?
- if len(addon) % len(source) == 0: # are they integer multiples?
- repeats = len(addon)/len(source) # repeat source n times
- origsour = copy.deepcopy(source)
- for i in range(repeats-1):
- source = source + origsour
- else:
- repeats = len(addon)/len(source)+1 # repeat source x times,
- origsour = copy.deepcopy(source) # x is NOT an integer
- for i in range(repeats-1):
- source = source + origsour
- source = source[0:len(addon)]
-
- source = simpleabut(source,addon)
- return source
-
-
-def simpleabut (source, addon):
- """
-Concatenates two lists as columns and returns the result. '2D' lists
-are also accomodated for either argument (source or addon). This DOES NOT
-repeat either list to make the 2 lists of equal length. Beware of list pairs
-with different lengths ... the resulting list will be the length of the
-FIRST list passed.
-
-Usage: simpleabut(source,addon) where source, addon=list (or list-of-lists)
-Returns: a list of lists as long as source, with source on the 'left' and
- addon on the 'right'
-"""
- if type(source) not in [ListType,TupleType]:
- source = [source]
- if type(addon) not in [ListType,TupleType]:
- addon = [addon]
- minlen = min(len(source),len(addon))
- list = copy.deepcopy(source) # start abut process
- if type(source[0]) not in [ListType,TupleType]:
- if type(addon[0]) not in [ListType,TupleType]:
- for i in range(minlen):
- list[i] = [source[i]] + [addon[i]] # source/addon = column
- else:
- for i in range(minlen):
- list[i] = [source[i]] + addon[i] # addon=list-of-lists
- else:
- if type(addon[0]) not in [ListType,TupleType]:
- for i in range(minlen):
- list[i] = source[i] + [addon[i]] # source=list-of-lists
- else:
- for i in range(minlen):
- list[i] = source[i] + addon[i] # source/addon = list-of-lists
- source = list
- return source
-
-
-def colex (listoflists,cnums):
- """
-Extracts from listoflists the columns specified in the list 'cnums'
-(cnums can be an integer, a sequence of integers, or a string-expression that
-corresponds to a slice operation on the variable x ... e.g., 'x[3:]' will colex
-columns 3 onward from the listoflists).
-
-Usage: colex (listoflists,cnums)
-Returns: a list-of-lists corresponding to the columns from listoflists
- specified by cnums, in the order the column numbers appear in cnums
-"""
- global index
- column = 0
- if type(cnums) in [ListType,TupleType]: # if multiple columns to get
- index = cnums[0]
- column = map(lambda x: x[index], listoflists)
- for col in cnums[1:]:
- index = col
- column = abut(column,map(lambda x: x[index], listoflists))
- elif type(cnums) == StringType: # if an 'x[3:]' type expr.
- evalstring = 'map(lambda x: x'+cnums+', listoflists)'
- column = eval(evalstring)
- else: # else it's just 1 col to get
- index = cnums
- column = map(lambda x: x[index], listoflists)
- return column
-
-
-def collapse (listoflists,keepcols,collapsecols,fcn1=None,fcn2=None,cfcn=None):
- """
-Averages data in collapsecol, keeping all unique items in keepcols
-(using unique, which keeps unique LISTS of column numbers), retaining the
-unique sets of values in keepcols, the mean for each. Setting fcn1
-and/or fcn2 to point to a function rather than None (e.g., stats.sterr, len)
-will append those results (e.g., the sterr, N) after each calculated mean.
-cfcn is the collapse function to apply (defaults to mean, defined here in the
-pstat module to avoid circular imports with stats.py, but harmonicmean or
-others could be passed).
-
-Usage: collapse (listoflists,keepcols,collapsecols,fcn1=None,fcn2=None,cfcn=None)
-Returns: a list of lists with all unique permutations of entries appearing in
- columns ("conditions") specified by keepcols, abutted with the result of
- cfcn (if cfcn=None, defaults to the mean) of each column specified by
- collapsecols.
-"""
- def collmean (inlist):
- s = 0
- for item in inlist:
- s = s + item
- return s/float(len(inlist))
-
- if type(keepcols) not in [ListType,TupleType]:
- keepcols = [keepcols]
- if type(collapsecols) not in [ListType,TupleType]:
- collapsecols = [collapsecols]
- if cfcn == None:
- cfcn = collmean
- if keepcols == []:
- means = [0]*len(collapsecols)
- for i in range(len(collapsecols)):
- avgcol = colex(listoflists,collapsecols[i])
- means[i] = cfcn(avgcol)
- if fcn1:
- try:
- test = fcn1(avgcol)
- except:
- test = 'N/A'
- means[i] = [means[i], test]
- if fcn2:
- try:
- test = fcn2(avgcol)
- except:
- test = 'N/A'
- try:
- means[i] = means[i] + [len(avgcol)]
- except TypeError:
- means[i] = [means[i],len(avgcol)]
- return means
- else:
- values = colex(listoflists,keepcols)
- uniques = unique(values)
- uniques.sort()
- newlist = []
- if type(keepcols) not in [ListType,TupleType]: keepcols = [keepcols]
- for item in uniques:
- if type(item) not in [ListType,TupleType]: item =[item]
- tmprows = linexand(listoflists,keepcols,item)
- for col in collapsecols:
- avgcol = colex(tmprows,col)
- item.append(cfcn(avgcol))
- if fcn1 <> None:
- try:
- test = fcn1(avgcol)
- except:
- test = 'N/A'
- item.append(test)
- if fcn2 <> None:
- try:
- test = fcn2(avgcol)
- except:
- test = 'N/A'
- item.append(test)
- newlist.append(item)
- return newlist
-
-
-def dm (listoflists,criterion):
- """
-Returns rows from the passed list of lists that meet the criteria in
-the passed criterion expression (a string as a function of x; e.g., 'x[3]>=9'
-will return all rows where the 4th column>=9 and "x[2]=='N'" will return rows
-with column 2 equal to the string 'N').
-
-Usage: dm (listoflists, criterion)
-Returns: rows from listoflists that meet the specified criterion.
-"""
- function = 'filter(lambda x: '+criterion+',listoflists)'
- lines = eval(function)
- return lines
-
-
-def flat(l):
- """
-Returns the flattened version of a '2D' list. List-correlate to the a.ravel()()
-method of NumPy arrays.
-
-Usage: flat(l)
-"""
- newl = []
- for i in range(len(l)):
- for j in range(len(l[i])):
- newl.append(l[i][j])
- return newl
-
-
-def linexand (listoflists,columnlist,valuelist):
- """
-Returns the rows of a list of lists where col (from columnlist) = val
-(from valuelist) for EVERY pair of values (columnlist[i],valuelists[i]).
-len(columnlist) must equal len(valuelist).
-
-Usage: linexand (listoflists,columnlist,valuelist)
-Returns: the rows of listoflists where columnlist[i]=valuelist[i] for ALL i
-"""
- if type(columnlist) not in [ListType,TupleType]:
- columnlist = [columnlist]
- if type(valuelist) not in [ListType,TupleType]:
- valuelist = [valuelist]
- criterion = ''
- for i in range(len(columnlist)):
- if type(valuelist[i])==StringType:
- critval = '\'' + valuelist[i] + '\''
- else:
- critval = str(valuelist[i])
- criterion = criterion + ' x['+str(columnlist[i])+']=='+critval+' and'
- criterion = criterion[0:-3] # remove the "and" after the last crit
- function = 'filter(lambda x: '+criterion+',listoflists)'
- lines = eval(function)
- return lines
-
-
-def linexor (listoflists,columnlist,valuelist):
- """
-Returns the rows of a list of lists where col (from columnlist) = val
-(from valuelist) for ANY pair of values (colunmlist[i],valuelist[i[).
-One value is required for each column in columnlist. If only one value
-exists for columnlist but multiple values appear in valuelist, the
-valuelist values are all assumed to pertain to the same column.
-
-Usage: linexor (listoflists,columnlist,valuelist)
-Returns: the rows of listoflists where columnlist[i]=valuelist[i] for ANY i
-"""
- if type(columnlist) not in [ListType,TupleType]:
- columnlist = [columnlist]
- if type(valuelist) not in [ListType,TupleType]:
- valuelist = [valuelist]
- criterion = ''
- if len(columnlist) == 1 and len(valuelist) > 1:
- columnlist = columnlist*len(valuelist)
- for i in range(len(columnlist)): # build an exec string
- if type(valuelist[i])==StringType:
- critval = '\'' + valuelist[i] + '\''
- else:
- critval = str(valuelist[i])
- criterion = criterion + ' x['+str(columnlist[i])+']=='+critval+' or'
- criterion = criterion[0:-2] # remove the "or" after the last crit
- function = 'filter(lambda x: '+criterion+',listoflists)'
- lines = eval(function)
- return lines
-
-
-def linedelimited (inlist,delimiter):
- """
-Returns a string composed of elements in inlist, with each element
-separated by 'delimiter.' Used by function writedelimited. Use '\t'
-for tab-delimiting.
-
-Usage: linedelimited (inlist,delimiter)
-"""
- outstr = ''
- for item in inlist:
- if type(item) <> StringType:
- item = str(item)
- outstr = outstr + item + delimiter
- outstr = outstr[0:-1]
- return outstr
-
-
-def lineincols (inlist,colsize):
- """
-Returns a string composed of elements in inlist, with each element
-right-aligned in columns of (fixed) colsize.
-
-Usage: lineincols (inlist,colsize) where colsize is an integer
-"""
- outstr = ''
- for item in inlist:
- if type(item) <> StringType:
- item = str(item)
- size = len(item)
- if size <= colsize:
- for i in range(colsize-size):
- outstr = outstr + ' '
- outstr = outstr + item
- else:
- outstr = outstr + item[0:colsize+1]
- return outstr
-
-
-def lineincustcols (inlist,colsizes):
- """
-Returns a string composed of elements in inlist, with each element
-right-aligned in a column of width specified by a sequence colsizes. The
-length of colsizes must be greater than or equal to the number of columns
-in inlist.
-
-Usage: lineincustcols (inlist,colsizes)
-Returns: formatted string created from inlist
-"""
- outstr = ''
- for i in range(len(inlist)):
- if type(inlist[i]) <> StringType:
- item = str(inlist[i])
- else:
- item = inlist[i]
- size = len(item)
- if size <= colsizes[i]:
- for j in range(colsizes[i]-size):
- outstr = outstr + ' '
- outstr = outstr + item
- else:
- outstr = outstr + item[0:colsizes[i]+1]
- return outstr
-
-
-def list2string (inlist,delimit=' '):
- """
-Converts a 1D list to a single long string for file output, using
-the string.join function.
-
-Usage: list2string (inlist,delimit=' ')
-Returns: the string created from inlist
-"""
- stringlist = map(makestr,inlist)
- return string.join(stringlist,delimit)
-
-
-def makelol(inlist):
- """
-Converts a 1D list to a 2D list (i.e., a list-of-lists). Useful when you
-want to use put() to write a 1D list one item per line in the file.
-
-Usage: makelol(inlist)
-Returns: if l = [1,2,'hi'] then returns [[1],[2],['hi']] etc.
-"""
- x = []
- for item in inlist:
- x.append([item])
- return x
-
-
-def makestr (x):
- if type(x) <> StringType:
- x = str(x)
- return x
-
-
-def printcc (lst,extra=2):
- """
-Prints a list of lists in columns, customized by the max size of items
-within the columns (max size of items in col, plus 'extra' number of spaces).
-Use 'dashes' or '\\n' in the list-of-lists to print dashes or blank lines,
-respectively.
-
-Usage: printcc (lst,extra=2)
-Returns: None
-"""
- if type(lst[0]) not in [ListType,TupleType]:
- lst = [lst]
- rowstokill = []
- list2print = copy.deepcopy(lst)
- for i in range(len(lst)):
- if lst[i] == ['\n'] or lst[i]=='\n' or lst[i]=='dashes' or lst[i]=='' or lst[i]==['']:
- rowstokill = rowstokill + [i]
- rowstokill.reverse() # delete blank rows from the end
- for row in rowstokill:
- del list2print[row]
- maxsize = [0]*len(list2print[0])
- for col in range(len(list2print[0])):
- items = colex(list2print,col)
- items = map(makestr,items)
- maxsize[col] = max(map(len,items)) + extra
- for row in lst:
- if row == ['\n'] or row == '\n' or row == '' or row == ['']:
- print
- elif row == ['dashes'] or row == 'dashes':
- dashes = [0]*len(maxsize)
- for j in range(len(maxsize)):
- dashes[j] = '-'*(maxsize[j]-2)
- print lineincustcols(dashes,maxsize)
- else:
- print lineincustcols(row,maxsize)
- return None
-
-
-def printincols (listoflists,colsize):
- """
-Prints a list of lists in columns of (fixed) colsize width, where
-colsize is an integer.
-
-Usage: printincols (listoflists,colsize)
-Returns: None
-"""
- for row in listoflists:
- print lineincols(row,colsize)
- return None
-
-
-def pl (listoflists):
- """
-Prints a list of lists, 1 list (row) at a time.
-
-Usage: pl(listoflists)
-Returns: None
-"""
- for row in listoflists:
- if row[-1] == '\n':
- print row,
- else:
- print row
- return None
-
-
-def printl(listoflists):
- """Alias for pl."""
- pl(listoflists)
- return
-
-
-def replace (inlst,oldval,newval):
- """
-Replaces all occurrences of 'oldval' with 'newval', recursively.
-
-Usage: replace (inlst,oldval,newval)
-"""
- lst = inlst*1
- for i in range(len(lst)):
- if type(lst[i]) not in [ListType,TupleType]:
- if lst[i]==oldval: lst[i]=newval
- else:
- lst[i] = replace(lst[i],oldval,newval)
- return lst
-
-
-def recode (inlist,listmap,cols=None):
- """
-Changes the values in a list to a new set of values (useful when
-you need to recode data from (e.g.) strings to numbers. cols defaults
-to None (meaning all columns are recoded).
-
-Usage: recode (inlist,listmap,cols=None) cols=recode cols, listmap=2D list
-Returns: inlist with the appropriate values replaced with new ones
-"""
- lst = copy.deepcopy(inlist)
- if cols != None:
- if type(cols) not in [ListType,TupleType]:
- cols = [cols]
- for col in cols:
- for row in range(len(lst)):
- try:
- idx = colex(listmap,0).index(lst[row][col])
- lst[row][col] = listmap[idx][1]
- except ValueError:
- pass
- else:
- for row in range(len(lst)):
- for col in range(len(lst)):
- try:
- idx = colex(listmap,0).index(lst[row][col])
- lst[row][col] = listmap[idx][1]
- except ValueError:
- pass
- return lst
-
-
-def remap (listoflists,criterion):
- """
-Remaps values in a given column of a 2D list (listoflists). This requires
-a criterion as a function of 'x' so that the result of the following is
-returned ... map(lambda x: 'criterion',listoflists).
-
-Usage: remap(listoflists,criterion) criterion=string
-Returns: remapped version of listoflists
-"""
- function = 'map(lambda x: '+criterion+',listoflists)'
- lines = eval(function)
- return lines
-
-
-def roundlist (inlist,digits):
- """
-Goes through each element in a 1D or 2D inlist, and applies the following
-function to all elements of FloatType ... round(element,digits).
-
-Usage: roundlist(inlist,digits)
-Returns: list with rounded floats
-"""
- if type(inlist[0]) in [IntType, FloatType]:
- inlist = [inlist]
- l = inlist*1
- for i in range(len(l)):
- for j in range(len(l[i])):
- if type(l[i][j])==FloatType:
- l[i][j] = round(l[i][j],digits)
- return l
-
-
-def sortby(listoflists,sortcols):
- """
-Sorts a list of lists on the column(s) specified in the sequence
-sortcols.
-
-Usage: sortby(listoflists,sortcols)
-Returns: sorted list, unchanged column ordering
-"""
- newlist = abut(colex(listoflists,sortcols),listoflists)
- newlist.sort()
- try:
- numcols = len(sortcols)
- except TypeError:
- numcols = 1
- crit = '[' + str(numcols) + ':]'
- newlist = colex(newlist,crit)
- return newlist
-
-
-def unique (inlist):
- """
-Returns all unique items in the passed list. If the a list-of-lists
-is passed, unique LISTS are found (i.e., items in the first dimension are
-compared).
-
-Usage: unique (inlist)
-Returns: the unique elements (or rows) in inlist
-"""
- uniques = []
- for item in inlist:
- if item not in uniques:
- uniques.append(item)
- return uniques
-
-def duplicates(inlist):
- """
-Returns duplicate items in the FIRST dimension of the passed list.
-
-Usage: duplicates (inlist)
-"""
- dups = []
- for i in range(len(inlist)):
- if inlist[i] in inlist[i+1:]:
- dups.append(inlist[i])
- return dups
-
-
-def nonrepeats(inlist):
- """
-Returns items that are NOT duplicated in the first dim of the passed list.
-
-Usage: nonrepeats (inlist)
-"""
- nonrepeats = []
- for i in range(len(inlist)):
- if inlist.count(inlist[i]) == 1:
- nonrepeats.append(inlist[i])
- return nonrepeats
-
-
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-#=================== PSTAT ARRAY FUNCTIONS =====================
-
-try: # DEFINE THESE *ONLY* IF numpy IS AVAILABLE
- import numpy as N
-
- def aabut (source, *args):
- """
-Like the |Stat abut command. It concatenates two arrays column-wise
-and returns the result. CAUTION: If one array is shorter, it will be
-repeated until it is as long as the other.
-
-Usage: aabut (source, args) where args=any # of arrays
-Returns: an array as long as the LONGEST array past, source appearing on the
- 'left', arrays in <args> attached on the 'right'.
-"""
- if len(source.shape)==1:
- width = 1
- source = N.resize(source,[source.shape[0],width])
- else:
- width = source.shape[1]
- for addon in args:
- if len(addon.shape)==1:
- width = 1
- addon = N.resize(addon,[source.shape[0],width])
- else:
- width = source.shape[1]
- if len(addon) < len(source):
- addon = N.resize(addon,[source.shape[0],addon.shape[1]])
- elif len(source) < len(addon):
- source = N.resize(source,[addon.shape[0],source.shape[1]])
- source = N.concatenate((source,addon),1)
- return source
-
-
- def acolex (a,indices,axis=1):
- """
-Extracts specified indices (a list) from passed array, along passed
-axis (column extraction is default). BEWARE: A 1D array is presumed to be a
-column-array (and that the whole array will be returned as a column).
-
-Usage: acolex (a,indices,axis=1)
-Returns: the columns of a specified by indices
-"""
- if type(indices) not in [ListType,TupleType,N.ndarray]:
- indices = [indices]
- if len(N.shape(a)) == 1:
- cols = N.resize(a,[a.shape[0],1])
- else:
- cols = N.take(a,indices,axis)
- return cols
-
-
- def acollapse (a,keepcols,collapsecols,fcn1=None,fcn2=None,cfcn=None):
- """
-Averages data in collapsecol, keeping all unique items in keepcols
-(using unique, which keeps unique LISTS of column numbers), retaining
-the unique sets of values in keepcols, the mean for each. If stderror or
-N of the mean are desired, set either or both parameters to 1.
-
-Usage: acollapse (a,keepcols,collapsecols,fcn1=None,fcn2=None,cfcn=None)
-Returns: unique 'conditions' specified by the contents of columns specified
- by keepcols, abutted with the mean(s) of column(s) specified by
- collapsecols
-"""
- def acollmean (inarray):
- return N.sum(N.ravel(inarray))
-
- if type(keepcols) not in [ListType,TupleType,N.ndarray]:
- keepcols = [keepcols]
- if type(collapsecols) not in [ListType,TupleType,N.ndarray]:
- collapsecols = [collapsecols]
-
- if cfcn == None:
- cfcn = acollmean
- if keepcols == []:
- avgcol = acolex(a,collapsecols)
- means = N.sum(avgcol)/float(len(avgcol))
- if fcn1<>None:
- try:
- test = fcn1(avgcol)
- except:
- test = N.array(['N/A']*len(means))
- means = aabut(means,test)
- if fcn2<>None:
- try:
- test = fcn2(avgcol)
- except:
- test = N.array(['N/A']*len(means))
- means = aabut(means,test)
- return means
- else:
- if type(keepcols) not in [ListType,TupleType,N.ndarray]:
- keepcols = [keepcols]
- values = colex(a,keepcols) # so that "item" can be appended (below)
- uniques = unique(values) # get a LIST, so .sort keeps rows intact
- uniques.sort()
- newlist = []
- for item in uniques:
- if type(item) not in [ListType,TupleType,N.ndarray]:
- item =[item]
- tmprows = alinexand(a,keepcols,item)
- for col in collapsecols:
- avgcol = acolex(tmprows,col)
- item.append(acollmean(avgcol))
- if fcn1<>None:
- try:
- test = fcn1(avgcol)
- except:
- test = 'N/A'
- item.append(test)
- if fcn2<>None:
- try:
- test = fcn2(avgcol)
- except:
- test = 'N/A'
- item.append(test)
- newlist.append(item)
- try:
- new_a = N.array(newlist)
- except TypeError:
- new_a = N.array(newlist,'O')
- return new_a
-
-
- def adm (a,criterion):
- """
-Returns rows from the passed list of lists that meet the criteria in
-the passed criterion expression (a string as a function of x).
-
-Usage: adm (a,criterion) where criterion is like 'x[2]==37'
-"""
- function = 'filter(lambda x: '+criterion+',a)'
- lines = eval(function)
- try:
- lines = N.array(lines)
- except:
- lines = N.array(lines,dtype='O')
- return lines
-
-
- def isstring(x):
- if type(x)==StringType:
- return 1
- else:
- return 0
-
-
- def alinexand (a,columnlist,valuelist):
- """
-Returns the rows of an array where col (from columnlist) = val
-(from valuelist). One value is required for each column in columnlist.
-
-Usage: alinexand (a,columnlist,valuelist)
-Returns: the rows of a where columnlist[i]=valuelist[i] for ALL i
-"""
- if type(columnlist) not in [ListType,TupleType,N.ndarray]:
- columnlist = [columnlist]
- if type(valuelist) not in [ListType,TupleType,N.ndarray]:
- valuelist = [valuelist]
- criterion = ''
- for i in range(len(columnlist)):
- if type(valuelist[i])==StringType:
- critval = '\'' + valuelist[i] + '\''
- else:
- critval = str(valuelist[i])
- criterion = criterion + ' x['+str(columnlist[i])+']=='+critval+' and'
- criterion = criterion[0:-3] # remove the "and" after the last crit
- return adm(a,criterion)
-
-
- def alinexor (a,columnlist,valuelist):
- """
-Returns the rows of an array where col (from columnlist) = val (from
-valuelist). One value is required for each column in columnlist.
-The exception is if either columnlist or valuelist has only 1 value,
-in which case that item will be expanded to match the length of the
-other list.
-
-Usage: alinexor (a,columnlist,valuelist)
-Returns: the rows of a where columnlist[i]=valuelist[i] for ANY i
-"""
- if type(columnlist) not in [ListType,TupleType,N.ndarray]:
- columnlist = [columnlist]
- if type(valuelist) not in [ListType,TupleType,N.ndarray]:
- valuelist = [valuelist]
- criterion = ''
- if len(columnlist) == 1 and len(valuelist) > 1:
- columnlist = columnlist*len(valuelist)
- elif len(valuelist) == 1 and len(columnlist) > 1:
- valuelist = valuelist*len(columnlist)
- for i in range(len(columnlist)):
- if type(valuelist[i])==StringType:
- critval = '\'' + valuelist[i] + '\''
- else:
- critval = str(valuelist[i])
- criterion = criterion + ' x['+str(columnlist[i])+']=='+critval+' or'
- criterion = criterion[0:-2] # remove the "or" after the last crit
- return adm(a,criterion)
-
-
- def areplace (a,oldval,newval):
- """
-Replaces all occurrences of oldval with newval in array a.
-
-Usage: areplace(a,oldval,newval)
-"""
- return N.where(a==oldval,newval,a)
-
-
- def arecode (a,listmap,col='all'):
- """
-Remaps the values in an array to a new set of values (useful when
-you need to recode data from (e.g.) strings to numbers as most stats
-packages require. Can work on SINGLE columns, or 'all' columns at once.
-@@@BROKEN 2007-11-26
-
-Usage: arecode (a,listmap,col='all')
-Returns: a version of array a where listmap[i][0] = (instead) listmap[i][1]
-"""
- ashape = a.shape
- if col == 'all':
- work = a.ravel()
- else:
- work = acolex(a,col)
- work = work.ravel()
- for pair in listmap:
- if type(pair[1]) == StringType or work.dtype.char=='O' or a.dtype.char=='O':
- work = N.array(work,dtype='O')
- a = N.array(a,dtype='O')
- for i in range(len(work)):
- if work[i]==pair[0]:
- work[i] = pair[1]
- if col == 'all':
- return N.reshape(work,ashape)
- else:
- return N.concatenate([a[:,0:col],work[:,N.newaxis],a[:,col+1:]],1)
- else: # must be a non-Object type array and replacement
- work = N.where(work==pair[0],pair[1],work)
- return N.concatenate([a[:,0:col],work[:,N.newaxis],a[:,col+1:]],1)
-
-
- def arowcompare(row1, row2):
- """
-Compares two rows from an array, regardless of whether it is an
-array of numbers or of python objects (which requires the cmp function).
-@@@PURPOSE? 2007-11-26
-
-Usage: arowcompare(row1,row2)
-Returns: an array of equal length containing 1s where the two rows had
- identical elements and 0 otherwise
-"""
- return
- if row1.dtype.char=='O' or row2.dtype=='O':
- cmpvect = N.logical_not(abs(N.array(map(cmp,row1,row2)))) # cmp fcn gives -1,0,1
- else:
- cmpvect = N.equal(row1,row2)
- return cmpvect
-
-
- def arowsame(row1, row2):
- """
-Compares two rows from an array, regardless of whether it is an
-array of numbers or of python objects (which requires the cmp function).
-
-Usage: arowsame(row1,row2)
-Returns: 1 if the two rows are identical, 0 otherwise.
-"""
- cmpval = N.alltrue(arowcompare(row1,row2))
- return cmpval
-
-
- def asortrows(a,axis=0):
- """
-Sorts an array "by rows". This differs from the Numeric.sort() function,
-which sorts elements WITHIN the given axis. Instead, this function keeps
-the elements along the given axis intact, but shifts them 'up or down'
-relative to one another.
-
-Usage: asortrows(a,axis=0)
-Returns: sorted version of a
-"""
- return N.sort(a,axis=axis,kind='mergesort')
-
-
- def aunique(inarray):
- """
-Returns unique items in the FIRST dimension of the passed array. Only
-works on arrays NOT including string items.
-
-Usage: aunique (inarray)
-"""
- uniques = N.array([inarray[0]])
- if len(uniques.shape) == 1: # IF IT'S A 1D ARRAY
- for item in inarray[1:]:
- if N.add.reduce(N.equal(uniques,item).ravel()) == 0:
- try:
- uniques = N.concatenate([uniques,N.array[N.newaxis,:]])
- except TypeError:
- uniques = N.concatenate([uniques,N.array([item])])
- else: # IT MUST BE A 2+D ARRAY
- if inarray.dtype.char != 'O': # not an Object array
- for item in inarray[1:]:
- if not N.sum(N.alltrue(N.equal(uniques,item),1)):
- try:
- uniques = N.concatenate( [uniques,item[N.newaxis,:]] )
- except TypeError: # the item to add isn't a list
- uniques = N.concatenate([uniques,N.array([item])])
- else:
- pass # this item is already in the uniques array
- else: # must be an Object array, alltrue/equal functions don't work
- for item in inarray[1:]:
- newflag = 1
- for unq in uniques: # NOTE: cmp --> 0=same, -1=<, 1=>
- test = N.sum(abs(N.array(map(cmp,item,unq))))
- if test == 0: # if item identical to any 1 row in uniques
- newflag = 0 # then not a novel item to add
- break
- if newflag == 1:
- try:
- uniques = N.concatenate( [uniques,item[N.newaxis,:]] )
- except TypeError: # the item to add isn't a list
- uniques = N.concatenate([uniques,N.array([item])])
- return uniques
-
-
- def aduplicates(inarray):
- """
-Returns duplicate items in the FIRST dimension of the passed array. Only
-works on arrays NOT including string items.
-
-Usage: aunique (inarray)
-"""
- inarray = N.array(inarray)
- if len(inarray.shape) == 1: # IF IT'S A 1D ARRAY
- dups = []
- inarray = inarray.tolist()
- for i in range(len(inarray)):
- if inarray[i] in inarray[i+1:]:
- dups.append(inarray[i])
- dups = aunique(dups)
- else: # IT MUST BE A 2+D ARRAY
- dups = []
- aslist = inarray.tolist()
- for i in range(len(aslist)):
- if aslist[i] in aslist[i+1:]:
- dups.append(aslist[i])
- dups = unique(dups)
- dups = N.array(dups)
- return dups
-
-except ImportError: # IF NUMERIC ISN'T AVAILABLE, SKIP ALL arrayfuncs
- pass
Removed: zorg/trunk/lnt/lnt/external/stats/stats.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/external/stats/stats.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/external/stats/stats.py (original)
+++ zorg/trunk/lnt/lnt/external/stats/stats.py (removed)
@@ -1,4522 +0,0 @@
-# Copyright (c) 1999-2007 Gary Strangman; All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# Comments and/or additions are welcome (send e-mail to:
-# strang at nmr.mgh.harvard.edu).
-#
-"""
-stats.py module
-
-(Requires pstat.py module.)
-
-#################################################
-####### Written by: Gary Strangman ###########
-####### Last modified: Dec 18, 2007 ###########
-#################################################
-
-A collection of basic statistical functions for python. The function
-names appear below.
-
-IMPORTANT: There are really *3* sets of functions. The first set has an 'l'
-prefix, which can be used with list or tuple arguments. The second set has
-an 'a' prefix, which can accept NumPy array arguments. These latter
-functions are defined only when NumPy is available on the system. The third
-type has NO prefix (i.e., has the name that appears below). Functions of
-this set are members of a "Dispatch" class, c/o David Ascher. This class
-allows different functions to be called depending on the type of the passed
-arguments. Thus, stats.mean is a member of the Dispatch class and
-stats.mean(range(20)) will call stats.lmean(range(20)) while
-stats.mean(Numeric.arange(20)) will call stats.amean(Numeric.arange(20)).
-This is a handy way to keep consistent function names when different
-argument types require different functions to be called. Having
-implementated the Dispatch class, however, means that to get info on
-a given function, you must use the REAL function name ... that is
-"print stats.lmean.__doc__" or "print stats.amean.__doc__" work fine,
-while "print stats.mean.__doc__" will print the doc for the Dispatch
-class. NUMPY FUNCTIONS ('a' prefix) generally have more argument options
-but should otherwise be consistent with the corresponding list functions.
-
-Disclaimers: The function list is obviously incomplete and, worse, the
-functions are not optimized. All functions have been tested (some more
-so than others), but they are far from bulletproof. Thus, as with any
-free software, no warranty or guarantee is expressed or implied. :-) A
-few extra functions that don't appear in the list below can be found by
-interested treasure-hunters. These functions don't necessarily have
-both list and array versions but were deemed useful
-
-CENTRAL TENDENCY: geometricmean
- harmonicmean
- mean
- median
- medianscore
- mode
-
-MOMENTS: moment
- variation
- skew
- kurtosis
- skewtest (for Numpy arrays only)
- kurtosistest (for Numpy arrays only)
- normaltest (for Numpy arrays only)
-
-ALTERED VERSIONS: tmean (for Numpy arrays only)
- tvar (for Numpy arrays only)
- tmin (for Numpy arrays only)
- tmax (for Numpy arrays only)
- tstdev (for Numpy arrays only)
- tsem (for Numpy arrays only)
- describe
-
-FREQUENCY STATS: itemfreq
- scoreatpercentile
- percentileofscore
- histogram
- cumfreq
- relfreq
-
-VARIABILITY: obrientransform
- samplevar
- samplestdev
- signaltonoise (for Numpy arrays only)
- var
- stdev
- sterr
- sem
- z
- zs
- zmap (for Numpy arrays only)
-
-TRIMMING FCNS: threshold (for Numpy arrays only)
- trimboth
- trim1
- round (round all vals to 'n' decimals; Numpy only)
-
-CORRELATION FCNS: covariance (for Numpy arrays only)
- correlation (for Numpy arrays only)
- paired
- pearsonr
- spearmanr
- pointbiserialr
- kendalltau
- linregress
-
-INFERENTIAL STATS: ttest_1samp
- ttest_ind
- ttest_rel
- chisquare
- ks_2samp
- mannwhitneyu
- ranksums
- wilcoxont
- kruskalwallish
- friedmanchisquare
-
-PROBABILITY CALCS: chisqprob
- erfcc
- zprob
- ksprob
- fprob
- betacf
- gammln
- betai
-
-ANOVA FUNCTIONS: F_oneway
- F_value
-
-SUPPORT FUNCTIONS: writecc
- incr
- sign (for Numpy arrays only)
- sum
- cumsum
- ss
- summult
- sumdiffsquared
- square_of_sums
- shellsort
- rankdata
- outputpairedstats
- findwithin
-"""
-## CHANGE LOG:
-## ===========
-## 07-11.26 ... conversion for numpy started
-## 07-05-16 ... added Lin's Concordance Correlation Coefficient (alincc) and acov
-## 05-08-21 ... added "Dice's coefficient"
-## 04-10-26 ... added ap2t(), an ugly fcn for converting p-vals to T-vals
-## 04-04-03 ... added amasslinregress() function to do regression on N-D arrays
-## 03-01-03 ... CHANGED VERSION TO 0.6
-## fixed atsem() to properly handle limits=None case
-## improved histogram and median functions (estbinwidth) and
-## fixed atvar() function (wrong answers for neg numbers?!?)
-## 02-11-19 ... fixed attest_ind and attest_rel for div-by-zero Overflows
-## 02-05-10 ... fixed lchisqprob indentation (failed when df=even)
-## 00-12-28 ... removed aanova() to separate module, fixed licensing to
-## match Python License, fixed doc string & imports
-## 00-04-13 ... pulled all "global" statements, except from aanova()
-## added/fixed lots of documentation, removed io.py dependency
-## changed to version 0.5
-## 99-11-13 ... added asign() function
-## 99-11-01 ... changed version to 0.4 ... enough incremental changes now
-## 99-10-25 ... added acovariance and acorrelation functions
-## 99-10-10 ... fixed askew/akurtosis to avoid divide-by-zero errors
-## added aglm function (crude, but will be improved)
-## 99-10-04 ... upgraded acumsum, ass, asummult, asamplevar, avar, etc. to
-## all handle lists of 'dimension's and keepdims
-## REMOVED ar0, ar2, ar3, ar4 and replaced them with around
-## reinserted fixes for abetai to avoid math overflows
-## 99-09-05 ... rewrote achisqprob/aerfcc/aksprob/afprob/abetacf/abetai to
-## handle multi-dimensional arrays (whew!)
-## 99-08-30 ... fixed l/amoment, l/askew, l/akurtosis per D'Agostino (1990)
-## added anormaltest per same reference
-## re-wrote azprob to calc arrays of probs all at once
-## 99-08-22 ... edited attest_ind printing section so arrays could be rounded
-## 99-08-19 ... fixed amean and aharmonicmean for non-error(!) overflow on
-## short/byte arrays (mean of #s btw 100-300 = -150??)
-## 99-08-09 ... fixed asum so that the None case works for Byte arrays
-## 99-08-08 ... fixed 7/3 'improvement' to handle t-calcs on N-D arrays
-## 99-07-03 ... improved attest_ind, attest_rel (zero-division errortrap)
-## 99-06-24 ... fixed bug(?) in attest_ind (n1=a.shape[0])
-## 04/11/99 ... added asignaltonoise, athreshold functions, changed all
-## max/min in array section to N.maximum/N.minimum,
-## fixed square_of_sums to prevent integer overflow
-## 04/10/99 ... !!! Changed function name ... sumsquared ==> square_of_sums
-## 03/18/99 ... Added ar0, ar2, ar3 and ar4 rounding functions
-## 02/28/99 ... Fixed aobrientransform to return an array rather than a list
-## 01/15/99 ... Essentially ceased updating list-versions of functions (!!!)
-## 01/13/99 ... CHANGED TO VERSION 0.3
-## fixed bug in a/lmannwhitneyu p-value calculation
-## 12/31/98 ... fixed variable-name bug in ldescribe
-## 12/19/98 ... fixed bug in findwithin (fcns needed pstat. prefix)
-## 12/16/98 ... changed amedianscore to return float (not array) for 1 score
-## 12/14/98 ... added atmin and atmax functions
-## removed umath from import line (not needed)
-## l/ageometricmean modified to reduce chance of overflows (take
-## nth root first, then multiply)
-## 12/07/98 ... added __version__variable (now 0.2)
-## removed all 'stats.' from anova() fcn
-## 12/06/98 ... changed those functions (except shellsort) that altered
-## arguments in-place ... cumsum, ranksort, ...
-## updated (and fixed some) doc-strings
-## 12/01/98 ... added anova() function (requires NumPy)
-## incorporated Dispatch class
-## 11/12/98 ... added functionality to amean, aharmonicmean, ageometricmean
-## added 'asum' function (added functionality to N.add.reduce)
-## fixed both moment and amoment (two errors)
-## changed name of skewness and askewness to skew and askew
-## fixed (a)histogram (which sometimes counted points <lowerlimit)
-
-import pstat # required 3rd party module
-import math, string, copy # required python modules
-from types import *
-
-__version__ = 0.6
-
-############# DISPATCH CODE ##############
-
-
-class Dispatch:
- """
-The Dispatch class, care of David Ascher, allows different functions to
-be called depending on the argument types. This way, there can be one
-function name regardless of the argument type. To access function doc
-in stats.py module, prefix the function with an 'l' or 'a' for list or
-array arguments, respectively. That is, print stats.lmean.__doc__ or
-print stats.amean.__doc__ or whatever.
-"""
-
- def __init__(self, *tuples):
- self._dispatch = {}
- for func, types in tuples:
- for t in types:
- if t in self._dispatch.keys():
- raise ValueError, "can't have two dispatches on "+str(t)
- self._dispatch[t] = func
- self._types = self._dispatch.keys()
-
- def __call__(self, arg1, *args, **kw):
- if type(arg1) not in self._types:
- raise TypeError, "don't know how to dispatch %s arguments" % type(arg1)
- return apply(self._dispatch[type(arg1)], (arg1,) + args, kw)
-
-
-##########################################################################
-######################## LIST-BASED FUNCTIONS ########################
-##########################################################################
-
-### Define these regardless
-
-####################################
-####### CENTRAL TENDENCY #########
-####################################
-
-def lgeometricmean (inlist):
- """
-Calculates the geometric mean of the values in the passed list.
-That is: n-th root of (x1 * x2 * ... * xn). Assumes a '1D' list.
-
-Usage: lgeometricmean(inlist)
-"""
- mult = 1.0
- one_over_n = 1.0/len(inlist)
- for item in inlist:
- mult = mult * pow(item,one_over_n)
- return mult
-
-
-def lharmonicmean (inlist):
- """
-Calculates the harmonic mean of the values in the passed list.
-That is: n / (1/x1 + 1/x2 + ... + 1/xn). Assumes a '1D' list.
-
-Usage: lharmonicmean(inlist)
-"""
- sum = 0
- for item in inlist:
- sum = sum + 1.0/item
- return len(inlist) / sum
-
-
-def lmean (inlist):
- """
-Returns the arithematic mean of the values in the passed list.
-Assumes a '1D' list, but will function on the 1st dim of an array(!).
-
-Usage: lmean(inlist)
-"""
- sum = 0
- for item in inlist:
- sum = sum + item
- return sum/float(len(inlist))
-
-
-def lmedian (inlist,numbins=1000):
- """
-Returns the computed median value of a list of numbers, given the
-number of bins to use for the histogram (more bins brings the computed value
-closer to the median score, default number of bins = 1000). See G.W.
-Heiman's Basic Stats (1st Edition), or CRC Probability & Statistics.
-
-Usage: lmedian (inlist, numbins=1000)
-"""
- (hist, smallest, binsize, extras) = histogram(inlist,numbins,[min(inlist),max(inlist)]) # make histog
- cumhist = cumsum(hist) # make cumulative histogram
- for i in range(len(cumhist)): # get 1st(!) index holding 50%ile score
- if cumhist[i]>=len(inlist)/2.0:
- cfbin = i
- break
- LRL = smallest + binsize*cfbin # get lower read limit of that bin
- cfbelow = cumhist[cfbin-1]
- freq = float(hist[cfbin]) # frequency IN the 50%ile bin
- median = LRL + ((len(inlist)/2.0 - cfbelow)/float(freq))*binsize # median formula
- return median
-
-
-def lmedianscore (inlist):
- """
-Returns the 'middle' score of the passed list. If there is an even
-number of scores, the mean of the 2 middle scores is returned.
-
-Usage: lmedianscore(inlist)
-"""
-
- newlist = copy.deepcopy(inlist)
- newlist.sort()
- if len(newlist) % 2 == 0: # if even number of scores, average middle 2
- index = len(newlist)/2 # integer division correct
- median = float(newlist[index] + newlist[index-1]) /2
- else:
- index = len(newlist)/2 # int divsion gives mid value when count from 0
- median = newlist[index]
- return median
-
-
-def lmode(inlist):
- """
-Returns a list of the modal (most common) score(s) in the passed
-list. If there is more than one such score, all are returned. The
-bin-count for the mode(s) is also returned.
-
-Usage: lmode(inlist)
-Returns: bin-count for mode(s), a list of modal value(s)
-"""
-
- scores = pstat.unique(inlist)
- scores.sort()
- freq = []
- for item in scores:
- freq.append(inlist.count(item))
- maxfreq = max(freq)
- mode = []
- stillmore = 1
- while stillmore:
- try:
- indx = freq.index(maxfreq)
- mode.append(scores[indx])
- del freq[indx]
- del scores[indx]
- except ValueError:
- stillmore=0
- return maxfreq, mode
-
-
-####################################
-############ MOMENTS #############
-####################################
-
-def lmoment(inlist,moment=1):
- """
-Calculates the nth moment about the mean for a sample (defaults to
-the 1st moment). Used to calculate coefficients of skewness and kurtosis.
-
-Usage: lmoment(inlist,moment=1)
-Returns: appropriate moment (r) from ... 1/n * SUM((inlist(i)-mean)**r)
-"""
- if moment == 1:
- return 0.0
- else:
- mn = mean(inlist)
- n = len(inlist)
- s = 0
- for x in inlist:
- s = s + (x-mn)**moment
- return s/float(n)
-
-
-def lvariation(inlist):
- """
-Returns the coefficient of variation, as defined in CRC Standard
-Probability and Statistics, p.6.
-
-Usage: lvariation(inlist)
-"""
- return 100.0*samplestdev(inlist)/float(mean(inlist))
-
-
-def lskew(inlist):
- """
-Returns the skewness of a distribution, as defined in Numerical
-Recipies (alternate defn in CRC Standard Probability and Statistics, p.6.)
-
-Usage: lskew(inlist)
-"""
- return moment(inlist,3)/pow(moment(inlist,2),1.5)
-
-
-def lkurtosis(inlist):
- """
-Returns the kurtosis of a distribution, as defined in Numerical
-Recipies (alternate defn in CRC Standard Probability and Statistics, p.6.)
-
-Usage: lkurtosis(inlist)
-"""
- return moment(inlist,4)/pow(moment(inlist,2),2.0)
-
-
-def ldescribe(inlist):
- """
-Returns some descriptive statistics of the passed list (assumed to be 1D).
-
-Usage: ldescribe(inlist)
-Returns: n, mean, standard deviation, skew, kurtosis
-"""
- n = len(inlist)
- mm = (min(inlist),max(inlist))
- m = mean(inlist)
- sd = stdev(inlist)
- sk = skew(inlist)
- kurt = kurtosis(inlist)
- return n, mm, m, sd, sk, kurt
-
-
-####################################
-####### FREQUENCY STATS ##########
-####################################
-
-def litemfreq(inlist):
- """
-Returns a list of pairs. Each pair consists of one of the scores in inlist
-and it's frequency count. Assumes a 1D list is passed.
-
-Usage: litemfreq(inlist)
-Returns: a 2D frequency table (col [0:n-1]=scores, col n=frequencies)
-"""
- scores = pstat.unique(inlist)
- scores.sort()
- freq = []
- for item in scores:
- freq.append(inlist.count(item))
- return pstat.abut(scores, freq)
-
-
-def lscoreatpercentile (inlist, percent):
- """
-Returns the score at a given percentile relative to the distribution
-given by inlist.
-
-Usage: lscoreatpercentile(inlist,percent)
-"""
- if percent > 1:
- print "\nDividing percent>1 by 100 in lscoreatpercentile().\n"
- percent = percent / 100.0
- targetcf = percent*len(inlist)
- h, lrl, binsize, extras = histogram(inlist)
- cumhist = cumsum(copy.deepcopy(h))
- for i in range(len(cumhist)):
- if cumhist[i] >= targetcf:
- break
- score = binsize * ((targetcf - cumhist[i-1]) / float(h[i])) + (lrl+binsize*i)
- return score
-
-
-def lpercentileofscore (inlist, score,histbins=10,defaultlimits=None):
- """
-Returns the percentile value of a score relative to the distribution
-given by inlist. Formula depends on the values used to histogram the data(!).
-
-Usage: lpercentileofscore(inlist,score,histbins=10,defaultlimits=None)
-"""
-
- h, lrl, binsize, extras = histogram(inlist,histbins,defaultlimits)
- cumhist = cumsum(copy.deepcopy(h))
- i = int((score - lrl)/float(binsize))
- pct = (cumhist[i-1]+((score-(lrl+binsize*i))/float(binsize))*h[i])/float(len(inlist)) * 100
- return pct
-
-
-def lhistogram (inlist,numbins=10,defaultreallimits=None,printextras=0):
- """
-Returns (i) a list of histogram bin counts, (ii) the smallest value
-of the histogram binning, and (iii) the bin width (the last 2 are not
-necessarily integers). Default number of bins is 10. If no sequence object
-is given for defaultreallimits, the routine picks (usually non-pretty) bins
-spanning all the numbers in the inlist.
-
-Usage: lhistogram (inlist, numbins=10, defaultreallimits=None,suppressoutput=0)
-Returns: list of bin values, lowerreallimit, binsize, extrapoints
-"""
- if (defaultreallimits <> None):
- if type(defaultreallimits) not in [ListType,TupleType] or len(defaultreallimits)==1: # only one limit given, assumed to be lower one & upper is calc'd
- lowerreallimit = defaultreallimits
- upperreallimit = 1.000001 * max(inlist)
- else: # assume both limits given
- lowerreallimit = defaultreallimits[0]
- upperreallimit = defaultreallimits[1]
- binsize = (upperreallimit-lowerreallimit)/float(numbins)
- else: # no limits given for histogram, both must be calc'd
- estbinwidth=(max(inlist)-min(inlist))/float(numbins) +1e-6 #1=>cover all
- binsize = ((max(inlist)-min(inlist)+estbinwidth))/float(numbins)
- lowerreallimit = min(inlist) - binsize/2 #lower real limit,1st bin
- bins = [0]*(numbins)
- extrapoints = 0
- for num in inlist:
- try:
- if (num-lowerreallimit) < 0:
- extrapoints = extrapoints + 1
- else:
- bintoincrement = int((num-lowerreallimit)/float(binsize))
- bins[bintoincrement] = bins[bintoincrement] + 1
- except:
- extrapoints = extrapoints + 1
- if (extrapoints > 0 and printextras == 1):
- print '\nPoints outside given histogram range =',extrapoints
- return (bins, lowerreallimit, binsize, extrapoints)
-
-
-def lcumfreq(inlist,numbins=10,defaultreallimits=None):
- """
-Returns a cumulative frequency histogram, using the histogram function.
-
-Usage: lcumfreq(inlist,numbins=10,defaultreallimits=None)
-Returns: list of cumfreq bin values, lowerreallimit, binsize, extrapoints
-"""
- h,l,b,e = histogram(inlist,numbins,defaultreallimits)
- cumhist = cumsum(copy.deepcopy(h))
- return cumhist,l,b,e
-
-
-def lrelfreq(inlist,numbins=10,defaultreallimits=None):
- """
-Returns a relative frequency histogram, using the histogram function.
-
-Usage: lrelfreq(inlist,numbins=10,defaultreallimits=None)
-Returns: list of cumfreq bin values, lowerreallimit, binsize, extrapoints
-"""
- h,l,b,e = histogram(inlist,numbins,defaultreallimits)
- for i in range(len(h)):
- h[i] = h[i]/float(len(inlist))
- return h,l,b,e
-
-
-####################################
-##### VARIABILITY FUNCTIONS ######
-####################################
-
-def lobrientransform(*args):
- """
-Computes a transform on input data (any number of columns). Used to
-test for homogeneity of variance prior to running one-way stats. From
-Maxwell and Delaney, p.112.
-
-Usage: lobrientransform(*args)
-Returns: transformed data for use in an ANOVA
-"""
- TINY = 1e-10
- k = len(args)
- n = [0.0]*k
- v = [0.0]*k
- m = [0.0]*k
- nargs = []
- for i in range(k):
- nargs.append(copy.deepcopy(args[i]))
- n[i] = float(len(nargs[i]))
- v[i] = var(nargs[i])
- m[i] = mean(nargs[i])
- for j in range(k):
- for i in range(n[j]):
- t1 = (n[j]-1.5)*n[j]*(nargs[j][i]-m[j])**2
- t2 = 0.5*v[j]*(n[j]-1.0)
- t3 = (n[j]-1.0)*(n[j]-2.0)
- nargs[j][i] = (t1-t2) / float(t3)
- check = 1
- for j in range(k):
- if v[j] - mean(nargs[j]) > TINY:
- check = 0
- if check <> 1:
- raise ValueError, 'Problem in obrientransform.'
- else:
- return nargs
-
-
-def lsamplevar (inlist):
- """
-Returns the variance of the values in the passed list using
-N for the denominator (i.e., DESCRIBES the sample variance only).
-
-Usage: lsamplevar(inlist)
-"""
- n = len(inlist)
- mn = mean(inlist)
- deviations = []
- for item in inlist:
- deviations.append(item-mn)
- return ss(deviations)/float(n)
-
-
-def lsamplestdev (inlist):
- """
-Returns the standard deviation of the values in the passed list using
-N for the denominator (i.e., DESCRIBES the sample stdev only).
-
-Usage: lsamplestdev(inlist)
-"""
- return math.sqrt(samplevar(inlist))
-
-
-def lcov (x,y, keepdims=0):
- """
-Returns the estimated covariance of the values in the passed
-array (i.e., N-1). Dimension can equal None (ravel array first), an
-integer (the dimension over which to operate), or a sequence (operate
-over multiple dimensions). Set keepdims=1 to return an array with the
-same number of dimensions as inarray.
-
-Usage: lcov(x,y,keepdims=0)
-"""
-
- n = len(x)
- xmn = mean(x)
- ymn = mean(y)
- xdeviations = [0]*len(x)
- ydeviations = [0]*len(y)
- for i in range(len(x)):
- xdeviations[i] = x[i] - xmn
- ydeviations[i] = y[i] - ymn
- ss = 0.0
- for i in range(len(xdeviations)):
- ss = ss + xdeviations[i]*ydeviations[i]
- return ss/float(n-1)
-
-
-def lvar (inlist):
- """
-Returns the variance of the values in the passed list using N-1
-for the denominator (i.e., for estimating population variance).
-
-Usage: lvar(inlist)
-"""
- n = len(inlist)
- mn = mean(inlist)
- deviations = [0]*len(inlist)
- for i in range(len(inlist)):
- deviations[i] = inlist[i] - mn
- return ss(deviations)/float(n-1)
-
-
-def lstdev (inlist):
- """
-Returns the standard deviation of the values in the passed list
-using N-1 in the denominator (i.e., to estimate population stdev).
-
-Usage: lstdev(inlist)
-"""
- return math.sqrt(var(inlist))
-
-
-def lsterr(inlist):
- """
-Returns the standard error of the values in the passed list using N-1
-in the denominator (i.e., to estimate population standard error).
-
-Usage: lsterr(inlist)
-"""
- return stdev(inlist) / float(math.sqrt(len(inlist)))
-
-
-def lsem (inlist):
- """
-Returns the estimated standard error of the mean (sx-bar) of the
-values in the passed list. sem = stdev / sqrt(n)
-
-Usage: lsem(inlist)
-"""
- sd = stdev(inlist)
- n = len(inlist)
- return sd/math.sqrt(n)
-
-
-def lz (inlist, score):
- """
-Returns the z-score for a given input score, given that score and the
-list from which that score came. Not appropriate for population calculations.
-
-Usage: lz(inlist, score)
-"""
- z = (score-mean(inlist))/samplestdev(inlist)
- return z
-
-
-def lzs (inlist):
- """
-Returns a list of z-scores, one for each score in the passed list.
-
-Usage: lzs(inlist)
-"""
- zscores = []
- for item in inlist:
- zscores.append(z(inlist,item))
- return zscores
-
-
-####################################
-####### TRIMMING FUNCTIONS #######
-####################################
-
-def ltrimboth (l,proportiontocut):
- """
-Slices off the passed proportion of items from BOTH ends of the passed
-list (i.e., with proportiontocut=0.1, slices 'leftmost' 10% AND 'rightmost'
-10% of scores. Assumes list is sorted by magnitude. Slices off LESS if
-proportion results in a non-integer slice index (i.e., conservatively
-slices off proportiontocut).
-
-Usage: ltrimboth (l,proportiontocut)
-Returns: trimmed version of list l
-"""
- lowercut = int(proportiontocut*len(l))
- uppercut = len(l) - lowercut
- return l[lowercut:uppercut]
-
-
-def ltrim1 (l,proportiontocut,tail='right'):
- """
-Slices off the passed proportion of items from ONE end of the passed
-list (i.e., if proportiontocut=0.1, slices off 'leftmost' or 'rightmost'
-10% of scores). Slices off LESS if proportion results in a non-integer
-slice index (i.e., conservatively slices off proportiontocut).
-
-Usage: ltrim1 (l,proportiontocut,tail='right') or set tail='left'
-Returns: trimmed version of list l
-"""
- if tail == 'right':
- lowercut = 0
- uppercut = len(l) - int(proportiontocut*len(l))
- elif tail == 'left':
- lowercut = int(proportiontocut*len(l))
- uppercut = len(l)
- return l[lowercut:uppercut]
-
-
-####################################
-##### CORRELATION FUNCTIONS ######
-####################################
-
-def lpaired(x,y):
- """
-Interactively determines the type of data and then runs the
-appropriated statistic for paired group data.
-
-Usage: lpaired(x,y)
-Returns: appropriate statistic name, value, and probability
-"""
- samples = ''
- while samples not in ['i','r','I','R','c','C']:
- print '\nIndependent or related samples, or correlation (i,r,c): ',
- samples = raw_input()
-
- if samples in ['i','I','r','R']:
- print '\nComparing variances ...',
-# USE O'BRIEN'S TEST FOR HOMOGENEITY OF VARIANCE, Maxwell & delaney, p.112
- r = obrientransform(x,y)
- f,p = F_oneway(pstat.colex(r,0),pstat.colex(r,1))
- if p<0.05:
- vartype='unequal, p='+str(round(p,4))
- else:
- vartype='equal'
- print vartype
- if samples in ['i','I']:
- if vartype[0]=='e':
- t,p = ttest_ind(x,y,0)
- print '\nIndependent samples t-test: ', round(t,4),round(p,4)
- else:
- if len(x)>20 or len(y)>20:
- z,p = ranksums(x,y)
- print '\nRank Sums test (NONparametric, n>20): ', round(z,4),round(p,4)
- else:
- u,p = mannwhitneyu(x,y)
- print '\nMann-Whitney U-test (NONparametric, ns<20): ', round(u,4),round(p,4)
-
- else: # RELATED SAMPLES
- if vartype[0]=='e':
- t,p = ttest_rel(x,y,0)
- print '\nRelated samples t-test: ', round(t,4),round(p,4)
- else:
- t,p = ranksums(x,y)
- print '\nWilcoxon T-test (NONparametric): ', round(t,4),round(p,4)
- else: # CORRELATION ANALYSIS
- corrtype = ''
- while corrtype not in ['c','C','r','R','d','D']:
- print '\nIs the data Continuous, Ranked, or Dichotomous (c,r,d): ',
- corrtype = raw_input()
- if corrtype in ['c','C']:
- m,b,r,p,see = linregress(x,y)
- print '\nLinear regression for continuous variables ...'
- lol = [['Slope','Intercept','r','Prob','SEestimate'],[round(m,4),round(b,4),round(r,4),round(p,4),round(see,4)]]
- pstat.printcc(lol)
- elif corrtype in ['r','R']:
- r,p = spearmanr(x,y)
- print '\nCorrelation for ranked variables ...'
- print "Spearman's r: ",round(r,4),round(p,4)
- else: # DICHOTOMOUS
- r,p = pointbiserialr(x,y)
- print '\nAssuming x contains a dichotomous variable ...'
- print 'Point Biserial r: ',round(r,4),round(p,4)
- print '\n\n'
- return None
-
-
-def lpearsonr(x,y):
- """
-Calculates a Pearson correlation coefficient and the associated
-probability value. Taken from Heiman's Basic Statistics for the Behav.
-Sci (2nd), p.195.
-
-Usage: lpearsonr(x,y) where x and y are equal-length lists
-Returns: Pearson's r value, two-tailed p-value
-"""
- TINY = 1.0e-30
- if len(x) <> len(y):
- raise ValueError, 'Input values not paired in pearsonr. Aborting.'
- n = len(x)
- x = map(float,x)
- y = map(float,y)
- xmean = mean(x)
- ymean = mean(y)
- r_num = n*(summult(x,y)) - sum(x)*sum(y)
- r_den = math.sqrt((n*ss(x) - square_of_sums(x))*(n*ss(y)-square_of_sums(y)))
- r = (r_num / r_den) # denominator already a float
- df = n-2
- t = r*math.sqrt(df/((1.0-r+TINY)*(1.0+r+TINY)))
- prob = betai(0.5*df,0.5,df/float(df+t*t))
- return r, prob
-
-
-def llincc(x,y):
- """
-Calculates Lin's concordance correlation coefficient.
-
-Usage: alincc(x,y) where x, y are equal-length arrays
-Returns: Lin's CC
-"""
- covar = lcov(x,y)*(len(x)-1)/float(len(x)) # correct denom to n
- xvar = lvar(x)*(len(x)-1)/float(len(x)) # correct denom to n
- yvar = lvar(y)*(len(y)-1)/float(len(y)) # correct denom to n
- lincc = (2 * covar) / ((xvar+yvar) +((amean(x)-amean(y))**2))
- return lincc
-
-
-def lspearmanr(x,y):
- """
-Calculates a Spearman rank-order correlation coefficient. Taken
-from Heiman's Basic Statistics for the Behav. Sci (1st), p.192.
-
-Usage: lspearmanr(x,y) where x and y are equal-length lists
-Returns: Spearman's r, two-tailed p-value
-"""
- TINY = 1e-30
- if len(x) <> len(y):
- raise ValueError, 'Input values not paired in spearmanr. Aborting.'
- n = len(x)
- rankx = rankdata(x)
- ranky = rankdata(y)
- dsq = sumdiffsquared(rankx,ranky)
- rs = 1 - 6*dsq / float(n*(n**2-1))
- t = rs * math.sqrt((n-2) / ((rs+1.0)*(1.0-rs)))
- df = n-2
- probrs = betai(0.5*df,0.5,df/(df+t*t)) # t already a float
-# probability values for rs are from part 2 of the spearman function in
-# Numerical Recipies, p.510. They are close to tables, but not exact. (?)
- return rs, probrs
-
-
-def lpointbiserialr(x,y):
- """
-Calculates a point-biserial correlation coefficient and the associated
-probability value. Taken from Heiman's Basic Statistics for the Behav.
-Sci (1st), p.194.
-
-Usage: lpointbiserialr(x,y) where x,y are equal-length lists
-Returns: Point-biserial r, two-tailed p-value
-"""
- TINY = 1e-30
- if len(x) <> len(y):
- raise ValueError, 'INPUT VALUES NOT PAIRED IN pointbiserialr. ABORTING.'
- data = pstat.abut(x,y)
- categories = pstat.unique(x)
- if len(categories) <> 2:
- raise ValueError, "Exactly 2 categories required for pointbiserialr()."
- else: # there are 2 categories, continue
- codemap = pstat.abut(categories,range(2))
- recoded = pstat.recode(data,codemap,0)
- x = pstat.linexand(data,0,categories[0])
- y = pstat.linexand(data,0,categories[1])
- xmean = mean(pstat.colex(x,1))
- ymean = mean(pstat.colex(y,1))
- n = len(data)
- adjust = math.sqrt((len(x)/float(n))*(len(y)/float(n)))
- rpb = (ymean - xmean)/samplestdev(pstat.colex(data,1))*adjust
- df = n-2
- t = rpb*math.sqrt(df/((1.0-rpb+TINY)*(1.0+rpb+TINY)))
- prob = betai(0.5*df,0.5,df/(df+t*t)) # t already a float
- return rpb, prob
-
-
-def lkendalltau(x,y):
- """
-Calculates Kendall's tau ... correlation of ordinal data. Adapted
-from function kendl1 in Numerical Recipies. Needs good test-routine.@@@
-
-Usage: lkendalltau(x,y)
-Returns: Kendall's tau, two-tailed p-value
-"""
- n1 = 0
- n2 = 0
- iss = 0
- for j in range(len(x)-1):
- for k in range(j,len(y)):
- a1 = x[j] - x[k]
- a2 = y[j] - y[k]
- aa = a1 * a2
- if (aa): # neither list has a tie
- n1 = n1 + 1
- n2 = n2 + 1
- if aa > 0:
- iss = iss + 1
- else:
- iss = iss -1
- else:
- if (a1):
- n1 = n1 + 1
- else:
- n2 = n2 + 1
- tau = iss / math.sqrt(n1*n2)
- svar = (4.0*len(x)+10.0) / (9.0*len(x)*(len(x)-1))
- z = tau / math.sqrt(svar)
- prob = erfcc(abs(z)/1.4142136)
- return tau, prob
-
-
-def llinregress(x,y):
- """
-Calculates a regression line on x,y pairs.
-
-Usage: llinregress(x,y) x,y are equal-length lists of x-y coordinates
-Returns: slope, intercept, r, two-tailed prob, sterr-of-estimate
-"""
- TINY = 1.0e-20
- if len(x) <> len(y):
- raise ValueError, 'Input values not paired in linregress. Aborting.'
- n = len(x)
- x = map(float,x)
- y = map(float,y)
- xmean = mean(x)
- ymean = mean(y)
- r_num = float(n*(summult(x,y)) - sum(x)*sum(y))
- r_den = math.sqrt((n*ss(x) - square_of_sums(x))*(n*ss(y)-square_of_sums(y)))
- r = r_num / r_den
- z = 0.5*math.log((1.0+r+TINY)/(1.0-r+TINY))
- df = n-2
- t = r*math.sqrt(df/((1.0-r+TINY)*(1.0+r+TINY)))
- prob = betai(0.5*df,0.5,df/(df+t*t))
- slope = r_num / float(n*ss(x) - square_of_sums(x))
- intercept = ymean - slope*xmean
- sterrest = math.sqrt(1-r*r)*samplestdev(y)
- return slope, intercept, r, prob, sterrest
-
-
-####################################
-##### INFERENTIAL STATISTICS #####
-####################################
-
-def lttest_1samp(a,popmean,printit=0,name='Sample',writemode='a'):
- """
-Calculates the t-obtained for the independent samples T-test on ONE group
-of scores a, given a population mean. If printit=1, results are printed
-to the screen. If printit='filename', the results are output to 'filename'
-using the given writemode (default=append). Returns t-value, and prob.
-
-Usage: lttest_1samp(a,popmean,Name='Sample',printit=0,writemode='a')
-Returns: t-value, two-tailed prob
-"""
- x = mean(a)
- v = var(a)
- n = len(a)
- df = n-1
- svar = ((n-1)*v)/float(df)
- t = (x-popmean)/math.sqrt(svar*(1.0/n))
- prob = betai(0.5*df,0.5,float(df)/(df+t*t))
-
- if printit <> 0:
- statname = 'Single-sample T-test.'
- outputpairedstats(printit,writemode,
- 'Population','--',popmean,0,0,0,
- name,n,x,v,min(a),max(a),
- statname,t,prob)
- return t,prob
-
-
-def lttest_ind (a, b, printit=0, name1='Samp1', name2='Samp2', writemode='a'):
- """
-Calculates the t-obtained T-test on TWO INDEPENDENT samples of
-scores a, and b. From Numerical Recipies, p.483. If printit=1, results
-are printed to the screen. If printit='filename', the results are output
-to 'filename' using the given writemode (default=append). Returns t-value,
-and prob.
-
-Usage: lttest_ind(a,b,printit=0,name1='Samp1',name2='Samp2',writemode='a')
-Returns: t-value, two-tailed prob
-"""
- x1 = mean(a)
- x2 = mean(b)
- v1 = stdev(a)**2
- v2 = stdev(b)**2
- n1 = len(a)
- n2 = len(b)
- df = n1+n2-2
- svar = ((n1-1)*v1+(n2-1)*v2)/float(df)
- t = (x1-x2)/math.sqrt(svar*(1.0/n1 + 1.0/n2))
- prob = betai(0.5*df,0.5,df/(df+t*t))
-
- if printit <> 0:
- statname = 'Independent samples T-test.'
- outputpairedstats(printit,writemode,
- name1,n1,x1,v1,min(a),max(a),
- name2,n2,x2,v2,min(b),max(b),
- statname,t,prob)
- return t,prob
-
-
-def lttest_rel (a,b,printit=0,name1='Sample1',name2='Sample2',writemode='a'):
- """
-Calculates the t-obtained T-test on TWO RELATED samples of scores,
-a and b. From Numerical Recipies, p.483. If printit=1, results are
-printed to the screen. If printit='filename', the results are output to
-'filename' using the given writemode (default=append). Returns t-value,
-and prob.
-
-Usage: lttest_rel(a,b,printit=0,name1='Sample1',name2='Sample2',writemode='a')
-Returns: t-value, two-tailed prob
-"""
- if len(a)<>len(b):
- raise ValueError, 'Unequal length lists in ttest_rel.'
- x1 = mean(a)
- x2 = mean(b)
- v1 = var(a)
- v2 = var(b)
- n = len(a)
- cov = 0
- for i in range(len(a)):
- cov = cov + (a[i]-x1) * (b[i]-x2)
- df = n-1
- cov = cov / float(df)
- sd = math.sqrt((v1+v2 - 2.0*cov)/float(n))
- t = (x1-x2)/sd
- prob = betai(0.5*df,0.5,df/(df+t*t))
-
- if printit <> 0:
- statname = 'Related samples T-test.'
- outputpairedstats(printit,writemode,
- name1,n,x1,v1,min(a),max(a),
- name2,n,x2,v2,min(b),max(b),
- statname,t,prob)
- return t, prob
-
-
-def lchisquare(f_obs,f_exp=None):
- """
-Calculates a one-way chi square for list of observed frequencies and returns
-the result. If no expected frequencies are given, the total N is assumed to
-be equally distributed across all groups.
-
-Usage: lchisquare(f_obs, f_exp=None) f_obs = list of observed cell freq.
-Returns: chisquare-statistic, associated p-value
-"""
- k = len(f_obs) # number of groups
- if f_exp == None:
- f_exp = [sum(f_obs)/float(k)] * len(f_obs) # create k bins with = freq.
- chisq = 0
- for i in range(len(f_obs)):
- chisq = chisq + (f_obs[i]-f_exp[i])**2 / float(f_exp[i])
- return chisq, chisqprob(chisq, k-1)
-
-
-def lks_2samp (data1,data2):
- """
-Computes the Kolmogorov-Smirnof statistic on 2 samples. From
-Numerical Recipies in C, page 493.
-
-Usage: lks_2samp(data1,data2) data1&2 are lists of values for 2 conditions
-Returns: KS D-value, associated p-value
-"""
- j1 = 0
- j2 = 0
- fn1 = 0.0
- fn2 = 0.0
- n1 = len(data1)
- n2 = len(data2)
- en1 = n1
- en2 = n2
- d = 0.0
- data1.sort()
- data2.sort()
- while j1 < n1 and j2 < n2:
- d1=data1[j1]
- d2=data2[j2]
- if d1 <= d2:
- fn1 = (j1)/float(en1)
- j1 = j1 + 1
- if d2 <= d1:
- fn2 = (j2)/float(en2)
- j2 = j2 + 1
- dt = (fn2-fn1)
- if math.fabs(dt) > math.fabs(d):
- d = dt
- try:
- en = math.sqrt(en1*en2/float(en1+en2))
- prob = ksprob((en+0.12+0.11/en)*abs(d))
- except:
- prob = 1.0
- return d, prob
-
-
-def lmannwhitneyu(x,y):
- """
-Calculates a Mann-Whitney U statistic on the provided scores and
-returns the result. Use only when the n in each condition is < 20 and
-you have 2 independent samples of ranks. NOTE: Mann-Whitney U is
-significant if the u-obtained is LESS THAN or equal to the critical
-value of U found in the tables. Equivalent to Kruskal-Wallis H with
-just 2 groups.
-
-Usage: lmannwhitneyu(data)
-Returns: u-statistic, one-tailed p-value (i.e., p(z(U)))
-"""
- n1 = len(x)
- n2 = len(y)
- ranked = rankdata(x+y)
- rankx = ranked[0:n1] # get the x-ranks
- ranky = ranked[n1:] # the rest are y-ranks
- u1 = n1*n2 + (n1*(n1+1))/2.0 - sum(rankx) # calc U for x
- u2 = n1*n2 - u1 # remainder is U for y
- bigu = max(u1,u2)
- smallu = min(u1,u2)
- T = math.sqrt(tiecorrect(ranked)) # correction factor for tied scores
- if T == 0:
- raise ValueError, 'All numbers are identical in lmannwhitneyu'
- sd = math.sqrt(T*n1*n2*(n1+n2+1)/12.0)
- z = abs((bigu-n1*n2/2.0) / sd) # normal approximation for prob calc
- return smallu, 1.0 - zprob(z)
-
-
-def ltiecorrect(rankvals):
- """
-Corrects for ties in Mann Whitney U and Kruskal Wallis H tests. See
-Siegel, S. (1956) Nonparametric Statistics for the Behavioral Sciences.
-New York: McGraw-Hill. Code adapted from |Stat rankind.c code.
-
-Usage: ltiecorrect(rankvals)
-Returns: T correction factor for U or H
-"""
- sorted,posn = shellsort(rankvals)
- n = len(sorted)
- T = 0.0
- i = 0
- while (i<n-1):
- if sorted[i] == sorted[i+1]:
- nties = 1
- while (i<n-1) and (sorted[i] == sorted[i+1]):
- nties = nties +1
- i = i +1
- T = T + nties**3 - nties
- i = i+1
- T = T / float(n**3-n)
- return 1.0 - T
-
-
-def lranksums(x,y):
- """
-Calculates the rank sums statistic on the provided scores and
-returns the result. Use only when the n in each condition is > 20 and you
-have 2 independent samples of ranks.
-
-Usage: lranksums(x,y)
-Returns: a z-statistic, two-tailed p-value
-"""
- n1 = len(x)
- n2 = len(y)
- alldata = x+y
- ranked = rankdata(alldata)
- x = ranked[:n1]
- y = ranked[n1:]
- s = sum(x)
- expected = n1*(n1+n2+1) / 2.0
- z = (s - expected) / math.sqrt(n1*n2*(n1+n2+1)/12.0)
- prob = 2*(1.0 -zprob(abs(z)))
- return z, prob
-
-
-def lwilcoxont(x,y):
- """
-Calculates the Wilcoxon T-test for related samples and returns the
-result. A non-parametric T-test.
-
-Usage: lwilcoxont(x,y)
-Returns: a t-statistic, two-tail probability estimate
-"""
- if len(x) <> len(y):
- raise ValueError, 'Unequal N in wilcoxont. Aborting.'
- d=[]
- for i in range(len(x)):
- diff = x[i] - y[i]
- if diff <> 0:
- d.append(diff)
- count = len(d)
- absd = map(abs,d)
- absranked = rankdata(absd)
- r_plus = 0.0
- r_minus = 0.0
- for i in range(len(absd)):
- if d[i] < 0:
- r_minus = r_minus + absranked[i]
- else:
- r_plus = r_plus + absranked[i]
- wt = min(r_plus, r_minus)
- mn = count * (count+1) * 0.25
- se = math.sqrt(count*(count+1)*(2.0*count+1.0)/24.0)
- z = math.fabs(wt-mn) / se
- prob = 2*(1.0 -zprob(abs(z)))
- return wt, prob
-
-
-def lkruskalwallish(*args):
- """
-The Kruskal-Wallis H-test is a non-parametric ANOVA for 3 or more
-groups, requiring at least 5 subjects in each group. This function
-calculates the Kruskal-Wallis H-test for 3 or more independent samples
-and returns the result.
-
-Usage: lkruskalwallish(*args)
-Returns: H-statistic (corrected for ties), associated p-value
-"""
- args = list(args)
- n = [0]*len(args)
- all = []
- n = map(len,args)
- for i in range(len(args)):
- all = all + args[i]
- ranked = rankdata(all)
- T = tiecorrect(ranked)
- for i in range(len(args)):
- args[i] = ranked[0:n[i]]
- del ranked[0:n[i]]
- rsums = []
- for i in range(len(args)):
- rsums.append(sum(args[i])**2)
- rsums[i] = rsums[i] / float(n[i])
- ssbn = sum(rsums)
- totaln = sum(n)
- h = 12.0 / (totaln*(totaln+1)) * ssbn - 3*(totaln+1)
- df = len(args) - 1
- if T == 0:
- raise ValueError, 'All numbers are identical in lkruskalwallish'
- h = h / float(T)
- return h, chisqprob(h,df)
-
-
-def lfriedmanchisquare(*args):
- """
-Friedman Chi-Square is a non-parametric, one-way within-subjects
-ANOVA. This function calculates the Friedman Chi-square test for repeated
-measures and returns the result, along with the associated probability
-value. It assumes 3 or more repeated measures. Only 3 levels requires a
-minimum of 10 subjects in the study. Four levels requires 5 subjects per
-level(??).
-
-Usage: lfriedmanchisquare(*args)
-Returns: chi-square statistic, associated p-value
-"""
- k = len(args)
- if k < 3:
- raise ValueError, 'Less than 3 levels. Friedman test not appropriate.'
- n = len(args[0])
- data = apply(pstat.abut,tuple(args))
- for i in range(len(data)):
- data[i] = rankdata(data[i])
- ssbn = 0
- for i in range(k):
- ssbn = ssbn + sum(args[i])**2
- chisq = 12.0 / (k*n*(k+1)) * ssbn - 3*n*(k+1)
- return chisq, chisqprob(chisq,k-1)
-
-
-####################################
-#### PROBABILITY CALCULATIONS ####
-####################################
-
-def lchisqprob(chisq,df):
- """
-Returns the (1-tailed) probability value associated with the provided
-chi-square value and df. Adapted from chisq.c in Gary Perlman's |Stat.
-
-Usage: lchisqprob(chisq,df)
-"""
- BIG = 20.0
- def ex(x):
- BIG = 20.0
- if x < -BIG:
- return 0.0
- else:
- return math.exp(x)
-
- if chisq <=0 or df < 1:
- return 1.0
- a = 0.5 * chisq
- if df%2 == 0:
- even = 1
- else:
- even = 0
- if df > 1:
- y = ex(-a)
- if even:
- s = y
- else:
- s = 2.0 * zprob(-math.sqrt(chisq))
- if (df > 2):
- chisq = 0.5 * (df - 1.0)
- if even:
- z = 1.0
- else:
- z = 0.5
- if a > BIG:
- if even:
- e = 0.0
- else:
- e = math.log(math.sqrt(math.pi))
- c = math.log(a)
- while (z <= chisq):
- e = math.log(z) + e
- s = s + ex(c*z-a-e)
- z = z + 1.0
- return s
- else:
- if even:
- e = 1.0
- else:
- e = 1.0 / math.sqrt(math.pi) / math.sqrt(a)
- c = 0.0
- while (z <= chisq):
- e = e * (a/float(z))
- c = c + e
- z = z + 1.0
- return (c*y+s)
- else:
- return s
-
-
-def lerfcc(x):
- """
-Returns the complementary error function erfc(x) with fractional
-error everywhere less than 1.2e-7. Adapted from Numerical Recipies.
-
-Usage: lerfcc(x)
-"""
- z = abs(x)
- t = 1.0 / (1.0+0.5*z)
- ans = t * math.exp(-z*z-1.26551223 + t*(1.00002368+t*(0.37409196+t*(0.09678418+t*(-0.18628806+t*(0.27886807+t*(-1.13520398+t*(1.48851587+t*(-0.82215223+t*0.17087277)))))))))
- if x >= 0:
- return ans
- else:
- return 2.0 - ans
-
-
-def lzprob(z):
- """
-Returns the area under the normal curve 'to the left of' the given z value.
-Thus,
- for z<0, zprob(z) = 1-tail probability
- for z>0, 1.0-zprob(z) = 1-tail probability
- for any z, 2.0*(1.0-zprob(abs(z))) = 2-tail probability
-Adapted from z.c in Gary Perlman's |Stat.
-
-Usage: lzprob(z)
-"""
- Z_MAX = 6.0 # maximum meaningful z-value
- if z == 0.0:
- x = 0.0
- else:
- y = 0.5 * math.fabs(z)
- if y >= (Z_MAX*0.5):
- x = 1.0
- elif (y < 1.0):
- w = y*y
- x = ((((((((0.000124818987 * w
- -0.001075204047) * w +0.005198775019) * w
- -0.019198292004) * w +0.059054035642) * w
- -0.151968751364) * w +0.319152932694) * w
- -0.531923007300) * w +0.797884560593) * y * 2.0
- else:
- y = y - 2.0
- x = (((((((((((((-0.000045255659 * y
- +0.000152529290) * y -0.000019538132) * y
- -0.000676904986) * y +0.001390604284) * y
- -0.000794620820) * y -0.002034254874) * y
- +0.006549791214) * y -0.010557625006) * y
- +0.011630447319) * y -0.009279453341) * y
- +0.005353579108) * y -0.002141268741) * y
- +0.000535310849) * y +0.999936657524
- if z > 0.0:
- prob = ((x+1.0)*0.5)
- else:
- prob = ((1.0-x)*0.5)
- return prob
-
-
-def lksprob(alam):
- """
-Computes a Kolmolgorov-Smirnov t-test significance level. Adapted from
-Numerical Recipies.
-
-Usage: lksprob(alam)
-"""
- fac = 2.0
- sum = 0.0
- termbf = 0.0
- a2 = -2.0*alam*alam
- for j in range(1,201):
- term = fac*math.exp(a2*j*j)
- sum = sum + term
- if math.fabs(term) <= (0.001*termbf) or math.fabs(term) < (1.0e-8*sum):
- return sum
- fac = -fac
- termbf = math.fabs(term)
- return 1.0 # Get here only if fails to converge; was 0.0!!
-
-
-def lfprob (dfnum, dfden, F):
- """
-Returns the (1-tailed) significance level (p-value) of an F
-statistic given the degrees of freedom for the numerator (dfR-dfF) and
-the degrees of freedom for the denominator (dfF).
-
-Usage: lfprob(dfnum, dfden, F) where usually dfnum=dfbn, dfden=dfwn
-"""
- p = betai(0.5*dfden, 0.5*dfnum, dfden/float(dfden+dfnum*F))
- return p
-
-
-def lbetacf(a,b,x):
- """
-This function evaluates the continued fraction form of the incomplete
-Beta function, betai. (Adapted from: Numerical Recipies in C.)
-
-Usage: lbetacf(a,b,x)
-"""
- ITMAX = 200
- EPS = 3.0e-7
-
- bm = az = am = 1.0
- qab = a+b
- qap = a+1.0
- qam = a-1.0
- bz = 1.0-qab*x/qap
- for i in range(ITMAX+1):
- em = float(i+1)
- tem = em + em
- d = em*(b-em)*x/((qam+tem)*(a+tem))
- ap = az + d*am
- bp = bz+d*bm
- d = -(a+em)*(qab+em)*x/((qap+tem)*(a+tem))
- app = ap+d*az
- bpp = bp+d*bz
- aold = az
- am = ap/bpp
- bm = bp/bpp
- az = app/bpp
- bz = 1.0
- if (abs(az-aold)<(EPS*abs(az))):
- return az
- print 'a or b too big, or ITMAX too small in Betacf.'
-
-
-def lgammln(xx):
- """
-Returns the gamma function of xx.
- Gamma(z) = Integral(0,infinity) of t^(z-1)exp(-t) dt.
-(Adapted from: Numerical Recipies in C.)
-
-Usage: lgammln(xx)
-"""
-
- coeff = [76.18009173, -86.50532033, 24.01409822, -1.231739516,
- 0.120858003e-2, -0.536382e-5]
- x = xx - 1.0
- tmp = x + 5.5
- tmp = tmp - (x+0.5)*math.log(tmp)
- ser = 1.0
- for j in range(len(coeff)):
- x = x + 1
- ser = ser + coeff[j]/x
- return -tmp + math.log(2.50662827465*ser)
-
-
-def lbetai(a,b,x):
- """
-Returns the incomplete beta function:
-
- I-sub-x(a,b) = 1/B(a,b)*(Integral(0,x) of t^(a-1)(1-t)^(b-1) dt)
-
-where a,b>0 and B(a,b) = G(a)*G(b)/(G(a+b)) where G(a) is the gamma
-function of a. The continued fraction formulation is implemented here,
-using the betacf function. (Adapted from: Numerical Recipies in C.)
-
-Usage: lbetai(a,b,x)
-"""
- if (x<0.0 or x>1.0):
- raise ValueError, 'Bad x in lbetai'
- if (x==0.0 or x==1.0):
- bt = 0.0
- else:
- bt = math.exp(gammln(a+b)-gammln(a)-gammln(b)+a*math.log(x)+b*
- math.log(1.0-x))
- if (x<(a+1.0)/(a+b+2.0)):
- return bt*betacf(a,b,x)/float(a)
- else:
- return 1.0-bt*betacf(b,a,1.0-x)/float(b)
-
-
-####################################
-####### ANOVA CALCULATIONS #######
-####################################
-
-def lF_oneway(*lists):
- """
-Performs a 1-way ANOVA, returning an F-value and probability given
-any number of groups. From Heiman, pp.394-7.
-
-Usage: F_oneway(*lists) where *lists is any number of lists, one per
- treatment group
-Returns: F value, one-tailed p-value
-"""
- a = len(lists) # ANOVA on 'a' groups, each in it's own list
- means = [0]*a
- vars = [0]*a
- ns = [0]*a
- alldata = []
- tmp = map(N.array,lists)
- means = map(amean,tmp)
- vars = map(avar,tmp)
- ns = map(len,lists)
- for i in range(len(lists)):
- alldata = alldata + lists[i]
- alldata = N.array(alldata)
- bign = len(alldata)
- sstot = ass(alldata)-(asquare_of_sums(alldata)/float(bign))
- ssbn = 0
- for list in lists:
- ssbn = ssbn + asquare_of_sums(N.array(list))/float(len(list))
- ssbn = ssbn - (asquare_of_sums(alldata)/float(bign))
- sswn = sstot-ssbn
- dfbn = a-1
- dfwn = bign - a
- msb = ssbn/float(dfbn)
- msw = sswn/float(dfwn)
- f = msb/msw
- prob = fprob(dfbn,dfwn,f)
- return f, prob
-
-
-def lF_value (ER,EF,dfnum,dfden):
- """
-Returns an F-statistic given the following:
- ER = error associated with the null hypothesis (the Restricted model)
- EF = error associated with the alternate hypothesis (the Full model)
- dfR-dfF = degrees of freedom of the numerator
- dfF = degrees of freedom associated with the denominator/Full model
-
-Usage: lF_value(ER,EF,dfnum,dfden)
-"""
- return ((ER-EF)/float(dfnum) / (EF/float(dfden)))
-
-
-####################################
-######## SUPPORT FUNCTIONS #######
-####################################
-
-def writecc (listoflists,file,writetype='w',extra=2):
- """
-Writes a list of lists to a file in columns, customized by the max
-size of items within the columns (max size of items in col, +2 characters)
-to specified file. File-overwrite is the default.
-
-Usage: writecc (listoflists,file,writetype='w',extra=2)
-Returns: None
-"""
- if type(listoflists[0]) not in [ListType,TupleType]:
- listoflists = [listoflists]
- outfile = open(file,writetype)
- rowstokill = []
- list2print = copy.deepcopy(listoflists)
- for i in range(len(listoflists)):
- if listoflists[i] == ['\n'] or listoflists[i]=='\n' or listoflists[i]=='dashes':
- rowstokill = rowstokill + [i]
- rowstokill.reverse()
- for row in rowstokill:
- del list2print[row]
- maxsize = [0]*len(list2print[0])
- for col in range(len(list2print[0])):
- items = pstat.colex(list2print,col)
- items = map(pstat.makestr,items)
- maxsize[col] = max(map(len,items)) + extra
- for row in listoflists:
- if row == ['\n'] or row == '\n':
- outfile.write('\n')
- elif row == ['dashes'] or row == 'dashes':
- dashes = [0]*len(maxsize)
- for j in range(len(maxsize)):
- dashes[j] = '-'*(maxsize[j]-2)
- outfile.write(pstat.lineincustcols(dashes,maxsize))
- else:
- outfile.write(pstat.lineincustcols(row,maxsize))
- outfile.write('\n')
- outfile.close()
- return None
-
-
-def lincr(l,cap): # to increment a list up to a max-list of 'cap'
- """
-Simulate a counting system from an n-dimensional list.
-
-Usage: lincr(l,cap) l=list to increment, cap=max values for each list pos'n
-Returns: next set of values for list l, OR -1 (if overflow)
-"""
- l[0] = l[0] + 1 # e.g., [0,0,0] --> [2,4,3] (=cap)
- for i in range(len(l)):
- if l[i] > cap[i] and i < len(l)-1: # if carryover AND not done
- l[i] = 0
- l[i+1] = l[i+1] + 1
- elif l[i] > cap[i] and i == len(l)-1: # overflow past last column, must be finished
- l = -1
- return l
-
-
-def lsum (inlist):
- """
-Returns the sum of the items in the passed list.
-
-Usage: lsum(inlist)
-"""
- s = 0
- for item in inlist:
- s = s + item
- return s
-
-
-def lcumsum (inlist):
- """
-Returns a list consisting of the cumulative sum of the items in the
-passed list.
-
-Usage: lcumsum(inlist)
-"""
- newlist = copy.deepcopy(inlist)
- for i in range(1,len(newlist)):
- newlist[i] = newlist[i] + newlist[i-1]
- return newlist
-
-
-def lss(inlist):
- """
-Squares each value in the passed list, adds up these squares and
-returns the result.
-
-Usage: lss(inlist)
-"""
- ss = 0
- for item in inlist:
- ss = ss + item*item
- return ss
-
-
-def lsummult (list1,list2):
- """
-Multiplies elements in list1 and list2, element by element, and
-returns the sum of all resulting multiplications. Must provide equal
-length lists.
-
-Usage: lsummult(list1,list2)
-"""
- if len(list1) <> len(list2):
- raise ValueError, "Lists not equal length in summult."
- s = 0
- for item1,item2 in pstat.abut(list1,list2):
- s = s + item1*item2
- return s
-
-
-def lsumdiffsquared(x,y):
- """
-Takes pairwise differences of the values in lists x and y, squares
-these differences, and returns the sum of these squares.
-
-Usage: lsumdiffsquared(x,y)
-Returns: sum[(x[i]-y[i])**2]
-"""
- sds = 0
- for i in range(len(x)):
- sds = sds + (x[i]-y[i])**2
- return sds
-
-
-def lsquare_of_sums(inlist):
- """
-Adds the values in the passed list, squares the sum, and returns
-the result.
-
-Usage: lsquare_of_sums(inlist)
-Returns: sum(inlist[i])**2
-"""
- s = sum(inlist)
- return float(s)*s
-
-
-def lshellsort(inlist):
- """
-Shellsort algorithm. Sorts a 1D-list.
-
-Usage: lshellsort(inlist)
-Returns: sorted-inlist, sorting-index-vector (for original list)
-"""
- n = len(inlist)
- svec = copy.deepcopy(inlist)
- ivec = range(n)
- gap = n/2 # integer division needed
- while gap >0:
- for i in range(gap,n):
- for j in range(i-gap,-1,-gap):
- while j>=0 and svec[j]>svec[j+gap]:
- temp = svec[j]
- svec[j] = svec[j+gap]
- svec[j+gap] = temp
- itemp = ivec[j]
- ivec[j] = ivec[j+gap]
- ivec[j+gap] = itemp
- gap = gap / 2 # integer division needed
-# svec is now sorted inlist, and ivec has the order svec[i] = vec[ivec[i]]
- return svec, ivec
-
-
-def lrankdata(inlist):
- """
-Ranks the data in inlist, dealing with ties appropritely. Assumes
-a 1D inlist. Adapted from Gary Perlman's |Stat ranksort.
-
-Usage: lrankdata(inlist)
-Returns: a list of length equal to inlist, containing rank scores
-"""
- n = len(inlist)
- svec, ivec = shellsort(inlist)
- sumranks = 0
- dupcount = 0
- newlist = [0]*n
- for i in range(n):
- sumranks = sumranks + i
- dupcount = dupcount + 1
- if i==n-1 or svec[i] <> svec[i+1]:
- averank = sumranks / float(dupcount) + 1
- for j in range(i-dupcount+1,i+1):
- newlist[ivec[j]] = averank
- sumranks = 0
- dupcount = 0
- return newlist
-
-
-def outputpairedstats(fname,writemode,name1,n1,m1,se1,min1,max1,name2,n2,m2,se2,min2,max2,statname,stat,prob):
- """
-Prints or write to a file stats for two groups, using the name, n,
-mean, sterr, min and max for each group, as well as the statistic name,
-its value, and the associated p-value.
-
-Usage: outputpairedstats(fname,writemode,
- name1,n1,mean1,stderr1,min1,max1,
- name2,n2,mean2,stderr2,min2,max2,
- statname,stat,prob)
-Returns: None
-"""
- suffix = '' # for *s after the p-value
- try:
- x = prob.shape
- prob = prob[0]
- except:
- pass
- if prob < 0.001: suffix = ' ***'
- elif prob < 0.01: suffix = ' **'
- elif prob < 0.05: suffix = ' *'
- title = [['Name','N','Mean','SD','Min','Max']]
- lofl = title+[[name1,n1,round(m1,3),round(math.sqrt(se1),3),min1,max1],
- [name2,n2,round(m2,3),round(math.sqrt(se2),3),min2,max2]]
- if type(fname)<>StringType or len(fname)==0:
- print
- print statname
- print
- pstat.printcc(lofl)
- print
- try:
- if stat.shape == ():
- stat = stat[0]
- if prob.shape == ():
- prob = prob[0]
- except:
- pass
- print 'Test statistic = ',round(stat,3),' p = ',round(prob,3),suffix
- print
- else:
- file = open(fname,writemode)
- file.write('\n'+statname+'\n\n')
- file.close()
- writecc(lofl,fname,'a')
- file = open(fname,'a')
- try:
- if stat.shape == ():
- stat = stat[0]
- if prob.shape == ():
- prob = prob[0]
- except:
- pass
- file.write(pstat.list2string(['\nTest statistic = ',round(stat,4),' p = ',round(prob,4),suffix,'\n\n']))
- file.close()
- return None
-
-
-def lfindwithin (data):
- """
-Returns an integer representing a binary vector, where 1=within-
-subject factor, 0=between. Input equals the entire data 2D list (i.e.,
-column 0=random factor, column -1=measured values (those two are skipped).
-Note: input data is in |Stat format ... a list of lists ("2D list") with
-one row per measured value, first column=subject identifier, last column=
-score, one in-between column per factor (these columns contain level
-designations on each factor). See also stats.anova.__doc__.
-
-Usage: lfindwithin(data) data in |Stat format
-"""
-
- numfact = len(data[0])-1
- withinvec = 0
- for col in range(1,numfact):
- examplelevel = pstat.unique(pstat.colex(data,col))[0]
- rows = pstat.linexand(data,col,examplelevel) # get 1 level of this factor
- factsubjs = pstat.unique(pstat.colex(rows,0))
- allsubjs = pstat.unique(pstat.colex(data,0))
- if len(factsubjs) == len(allsubjs): # fewer Ss than scores on this factor?
- withinvec = withinvec + (1 << col)
- return withinvec
-
-
-#########################################################
-#########################################################
-####### DISPATCH LISTS AND TUPLES TO ABOVE FCNS #########
-#########################################################
-#########################################################
-
-## CENTRAL TENDENCY:
-geometricmean = Dispatch ( (lgeometricmean, (ListType, TupleType)), )
-harmonicmean = Dispatch ( (lharmonicmean, (ListType, TupleType)), )
-mean = Dispatch ( (lmean, (ListType, TupleType)), )
-median = Dispatch ( (lmedian, (ListType, TupleType)), )
-medianscore = Dispatch ( (lmedianscore, (ListType, TupleType)), )
-mode = Dispatch ( (lmode, (ListType, TupleType)), )
-
-## MOMENTS:
-moment = Dispatch ( (lmoment, (ListType, TupleType)), )
-variation = Dispatch ( (lvariation, (ListType, TupleType)), )
-skew = Dispatch ( (lskew, (ListType, TupleType)), )
-kurtosis = Dispatch ( (lkurtosis, (ListType, TupleType)), )
-describe = Dispatch ( (ldescribe, (ListType, TupleType)), )
-
-## FREQUENCY STATISTICS:
-itemfreq = Dispatch ( (litemfreq, (ListType, TupleType)), )
-scoreatpercentile = Dispatch ( (lscoreatpercentile, (ListType, TupleType)), )
-percentileofscore = Dispatch ( (lpercentileofscore, (ListType, TupleType)), )
-histogram = Dispatch ( (lhistogram, (ListType, TupleType)), )
-cumfreq = Dispatch ( (lcumfreq, (ListType, TupleType)), )
-relfreq = Dispatch ( (lrelfreq, (ListType, TupleType)), )
-
-## VARIABILITY:
-obrientransform = Dispatch ( (lobrientransform, (ListType, TupleType)), )
-samplevar = Dispatch ( (lsamplevar, (ListType, TupleType)), )
-samplestdev = Dispatch ( (lsamplestdev, (ListType, TupleType)), )
-var = Dispatch ( (lvar, (ListType, TupleType)), )
-stdev = Dispatch ( (lstdev, (ListType, TupleType)), )
-sterr = Dispatch ( (lsterr, (ListType, TupleType)), )
-sem = Dispatch ( (lsem, (ListType, TupleType)), )
-z = Dispatch ( (lz, (ListType, TupleType)), )
-zs = Dispatch ( (lzs, (ListType, TupleType)), )
-
-## TRIMMING FCNS:
-trimboth = Dispatch ( (ltrimboth, (ListType, TupleType)), )
-trim1 = Dispatch ( (ltrim1, (ListType, TupleType)), )
-
-## CORRELATION FCNS:
-paired = Dispatch ( (lpaired, (ListType, TupleType)), )
-pearsonr = Dispatch ( (lpearsonr, (ListType, TupleType)), )
-spearmanr = Dispatch ( (lspearmanr, (ListType, TupleType)), )
-pointbiserialr = Dispatch ( (lpointbiserialr, (ListType, TupleType)), )
-kendalltau = Dispatch ( (lkendalltau, (ListType, TupleType)), )
-linregress = Dispatch ( (llinregress, (ListType, TupleType)), )
-
-## INFERENTIAL STATS:
-ttest_1samp = Dispatch ( (lttest_1samp, (ListType, TupleType)), )
-ttest_ind = Dispatch ( (lttest_ind, (ListType, TupleType)), )
-ttest_rel = Dispatch ( (lttest_rel, (ListType, TupleType)), )
-chisquare = Dispatch ( (lchisquare, (ListType, TupleType)), )
-ks_2samp = Dispatch ( (lks_2samp, (ListType, TupleType)), )
-mannwhitneyu = Dispatch ( (lmannwhitneyu, (ListType, TupleType)), )
-ranksums = Dispatch ( (lranksums, (ListType, TupleType)), )
-tiecorrect = Dispatch ( (ltiecorrect, (ListType, TupleType)), )
-wilcoxont = Dispatch ( (lwilcoxont, (ListType, TupleType)), )
-kruskalwallish = Dispatch ( (lkruskalwallish, (ListType, TupleType)), )
-friedmanchisquare = Dispatch ( (lfriedmanchisquare, (ListType, TupleType)), )
-
-## PROBABILITY CALCS:
-chisqprob = Dispatch ( (lchisqprob, (IntType, FloatType)), )
-zprob = Dispatch ( (lzprob, (IntType, FloatType)), )
-ksprob = Dispatch ( (lksprob, (IntType, FloatType)), )
-fprob = Dispatch ( (lfprob, (IntType, FloatType)), )
-betacf = Dispatch ( (lbetacf, (IntType, FloatType)), )
-betai = Dispatch ( (lbetai, (IntType, FloatType)), )
-erfcc = Dispatch ( (lerfcc, (IntType, FloatType)), )
-gammln = Dispatch ( (lgammln, (IntType, FloatType)), )
-
-## ANOVA FUNCTIONS:
-F_oneway = Dispatch ( (lF_oneway, (ListType, TupleType)), )
-F_value = Dispatch ( (lF_value, (ListType, TupleType)), )
-
-## SUPPORT FUNCTIONS:
-incr = Dispatch ( (lincr, (ListType, TupleType)), )
-sum = Dispatch ( (lsum, (ListType, TupleType)), )
-cumsum = Dispatch ( (lcumsum, (ListType, TupleType)), )
-ss = Dispatch ( (lss, (ListType, TupleType)), )
-summult = Dispatch ( (lsummult, (ListType, TupleType)), )
-square_of_sums = Dispatch ( (lsquare_of_sums, (ListType, TupleType)), )
-sumdiffsquared = Dispatch ( (lsumdiffsquared, (ListType, TupleType)), )
-shellsort = Dispatch ( (lshellsort, (ListType, TupleType)), )
-rankdata = Dispatch ( (lrankdata, (ListType, TupleType)), )
-findwithin = Dispatch ( (lfindwithin, (ListType, TupleType)), )
-
-
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-#============= THE ARRAY-VERSION OF THE STATS FUNCTIONS ===============
-
-try: # DEFINE THESE *ONLY* IF NUMERIC IS AVAILABLE
- import numpy as N
- import numpy.linalg as LA
-
-
-#####################################
-######## ACENTRAL TENDENCY ########
-#####################################
-
- def ageometricmean (inarray,dimension=None,keepdims=0):
- """
-Calculates the geometric mean of the values in the passed array.
-That is: n-th root of (x1 * x2 * ... * xn). Defaults to ALL values in
-the passed array. Use dimension=None to flatten array first. REMEMBER: if
-dimension=0, it collapses over dimension 0 ('rows' in a 2D array) only, and
-if dimension is a sequence, it collapses over all specified dimensions. If
-keepdims is set to 1, the resulting array will have as many dimensions as
-inarray, with only 1 'level' per dim that was collapsed over.
-
-Usage: ageometricmean(inarray,dimension=None,keepdims=0)
-Returns: geometric mean computed over dim(s) listed in dimension
-"""
- inarray = N.array(inarray,N.float_)
- if dimension == None:
- inarray = N.ravel(inarray)
- size = len(inarray)
- mult = N.power(inarray,1.0/size)
- mult = N.multiply.reduce(mult)
- elif type(dimension) in [IntType,FloatType]:
- size = inarray.shape[dimension]
- mult = N.power(inarray,1.0/size)
- mult = N.multiply.reduce(mult,dimension)
- if keepdims == 1:
- shp = list(inarray.shape)
- shp[dimension] = 1
- sum = N.reshape(sum,shp)
- else: # must be a SEQUENCE of dims to average over
- dims = list(dimension)
- dims.sort()
- dims.reverse()
- size = N.array(N.multiply.reduce(N.take(inarray.shape,dims)),N.float_)
- mult = N.power(inarray,1.0/size)
- for dim in dims:
- mult = N.multiply.reduce(mult,dim)
- if keepdims == 1:
- shp = list(inarray.shape)
- for dim in dims:
- shp[dim] = 1
- mult = N.reshape(mult,shp)
- return mult
-
-
- def aharmonicmean (inarray,dimension=None,keepdims=0):
- """
-Calculates the harmonic mean of the values in the passed array.
-That is: n / (1/x1 + 1/x2 + ... + 1/xn). Defaults to ALL values in
-the passed array. Use dimension=None to flatten array first. REMEMBER: if
-dimension=0, it collapses over dimension 0 ('rows' in a 2D array) only, and
-if dimension is a sequence, it collapses over all specified dimensions. If
-keepdims is set to 1, the resulting array will have as many dimensions as
-inarray, with only 1 'level' per dim that was collapsed over.
-
-Usage: aharmonicmean(inarray,dimension=None,keepdims=0)
-Returns: harmonic mean computed over dim(s) in dimension
-"""
- inarray = inarray.astype(N.float_)
- if dimension == None:
- inarray = N.ravel(inarray)
- size = len(inarray)
- s = N.add.reduce(1.0 / inarray)
- elif type(dimension) in [IntType,FloatType]:
- size = float(inarray.shape[dimension])
- s = N.add.reduce(1.0/inarray, dimension)
- if keepdims == 1:
- shp = list(inarray.shape)
- shp[dimension] = 1
- s = N.reshape(s,shp)
- else: # must be a SEQUENCE of dims to average over
- dims = list(dimension)
- dims.sort()
- nondims = []
- for i in range(len(inarray.shape)):
- if i not in dims:
- nondims.append(i)
- tinarray = N.transpose(inarray,nondims+dims) # put keep-dims first
- idx = [0] *len(nondims)
- if idx == []:
- size = len(N.ravel(inarray))
- s = asum(1.0 / inarray)
- if keepdims == 1:
- s = N.reshape([s],N.ones(len(inarray.shape)))
- else:
- idx[0] = -1
- loopcap = N.array(tinarray.shape[0:len(nondims)]) -1
- s = N.zeros(loopcap+1,N.float_)
- while incr(idx,loopcap) <> -1:
- s[idx] = asum(1.0/tinarray[idx])
- size = N.multiply.reduce(N.take(inarray.shape,dims))
- if keepdims == 1:
- shp = list(inarray.shape)
- for dim in dims:
- shp[dim] = 1
- s = N.reshape(s,shp)
- return size / s
-
-
- def amean (inarray,dimension=None,keepdims=0):
- """
-Calculates the arithmatic mean of the values in the passed array.
-That is: 1/n * (x1 + x2 + ... + xn). Defaults to ALL values in the
-passed array. Use dimension=None to flatten array first. REMEMBER: if
-dimension=0, it collapses over dimension 0 ('rows' in a 2D array) only, and
-if dimension is a sequence, it collapses over all specified dimensions. If
-keepdims is set to 1, the resulting array will have as many dimensions as
-inarray, with only 1 'level' per dim that was collapsed over.
-
-Usage: amean(inarray,dimension=None,keepdims=0)
-Returns: arithematic mean calculated over dim(s) in dimension
-"""
- if inarray.dtype in [N.int_, N.short,N.ubyte]:
- inarray = inarray.astype(N.float_)
- if dimension == None:
- inarray = N.ravel(inarray)
- sum = N.add.reduce(inarray)
- denom = float(len(inarray))
- elif type(dimension) in [IntType,FloatType]:
- sum = asum(inarray,dimension)
- denom = float(inarray.shape[dimension])
- if keepdims == 1:
- shp = list(inarray.shape)
- shp[dimension] = 1
- sum = N.reshape(sum,shp)
- else: # must be a TUPLE of dims to average over
- dims = list(dimension)
- dims.sort()
- dims.reverse()
- sum = inarray *1.0
- for dim in dims:
- sum = N.add.reduce(sum,dim)
- denom = N.array(N.multiply.reduce(N.take(inarray.shape,dims)),N.float_)
- if keepdims == 1:
- shp = list(inarray.shape)
- for dim in dims:
- shp[dim] = 1
- sum = N.reshape(sum,shp)
- return sum/denom
-
-
- def amedian (inarray,numbins=1000):
- """
-Calculates the COMPUTED median value of an array of numbers, given the
-number of bins to use for the histogram (more bins approaches finding the
-precise median value of the array; default number of bins = 1000). From
-G.W. Heiman's Basic Stats, or CRC Probability & Statistics.
-NOTE: THIS ROUTINE ALWAYS uses the entire passed array (flattens it first).
-
-Usage: amedian(inarray,numbins=1000)
-Returns: median calculated over ALL values in inarray
-"""
- inarray = N.ravel(inarray)
- (hist, smallest, binsize, extras) = ahistogram(inarray,numbins,[min(inarray),max(inarray)])
- cumhist = N.cumsum(hist) # make cumulative histogram
- otherbins = N.greater_equal(cumhist,len(inarray)/2.0)
- otherbins = list(otherbins) # list of 0/1s, 1s start at median bin
- cfbin = otherbins.index(1) # get 1st(!) index holding 50%ile score
- LRL = smallest + binsize*cfbin # get lower read limit of that bin
- cfbelow = N.add.reduce(hist[0:cfbin]) # cum. freq. below bin
- freq = hist[cfbin] # frequency IN the 50%ile bin
- median = LRL + ((len(inarray)/2.0-cfbelow)/float(freq))*binsize # MEDIAN
- return median
-
-
- def amedianscore (inarray,dimension=None):
- """
-Returns the 'middle' score of the passed array. If there is an even
-number of scores, the mean of the 2 middle scores is returned. Can function
-with 1D arrays, or on the FIRST dimension of 2D arrays (i.e., dimension can
-be None, to pre-flatten the array, or else dimension must equal 0).
-
-Usage: amedianscore(inarray,dimension=None)
-Returns: 'middle' score of the array, or the mean of the 2 middle scores
-"""
- if dimension == None:
- inarray = N.ravel(inarray)
- dimension = 0
- inarray = N.sort(inarray,dimension)
- if inarray.shape[dimension] % 2 == 0: # if even number of elements
- indx = inarray.shape[dimension]/2 # integer division correct
- median = N.asarray(inarray[indx]+inarray[indx-1]) / 2.0
- else:
- indx = inarray.shape[dimension] / 2 # integer division correct
- median = N.take(inarray,[indx],dimension)
- if median.shape == (1,):
- median = median[0]
- return median
-
-
- def amode(a, dimension=None):
- """
-Returns an array of the modal (most common) score in the passed array.
-If there is more than one such score, ONLY THE FIRST is returned.
-The bin-count for the modal values is also returned. Operates on whole
-array (dimension=None), or on a given dimension.
-
-Usage: amode(a, dimension=None)
-Returns: array of bin-counts for mode(s), array of corresponding modal values
-"""
-
- if dimension == None:
- a = N.ravel(a)
- dimension = 0
- scores = pstat.aunique(N.ravel(a)) # get ALL unique values
- testshape = list(a.shape)
- testshape[dimension] = 1
- oldmostfreq = N.zeros(testshape)
- oldcounts = N.zeros(testshape)
- for score in scores:
- template = N.equal(a,score)
- counts = asum(template,dimension,1)
- mostfrequent = N.where(counts>oldcounts,score,oldmostfreq)
- oldcounts = N.where(counts>oldcounts,counts,oldcounts)
- oldmostfreq = mostfrequent
- return oldcounts, mostfrequent
-
-
- def atmean(a,limits=None,inclusive=(1,1)):
- """
-Returns the arithmetic mean of all values in an array, ignoring values
-strictly outside the sequence passed to 'limits'. Note: either limit
-in the sequence, or the value of limits itself, can be set to None. The
-inclusive list/tuple determines whether the lower and upper limiting bounds
-(respectively) are open/exclusive (0) or closed/inclusive (1).
-
-Usage: atmean(a,limits=None,inclusive=(1,1))
-"""
- if a.dtype in [N.int_, N.short,N.ubyte]:
- a = a.astype(N.float_)
- if limits == None:
- return mean(a)
- assert type(limits) in [ListType,TupleType,N.ndarray], "Wrong type for limits in atmean"
- if inclusive[0]: lowerfcn = N.greater_equal
- else: lowerfcn = N.greater
- if inclusive[1]: upperfcn = N.less_equal
- else: upperfcn = N.less
- if limits[0] > N.maximum.reduce(N.ravel(a)) or limits[1] < N.minimum.reduce(N.ravel(a)):
- raise ValueError, "No array values within given limits (atmean)."
- elif limits[0]==None and limits[1]<>None:
- mask = upperfcn(a,limits[1])
- elif limits[0]<>None and limits[1]==None:
- mask = lowerfcn(a,limits[0])
- elif limits[0]<>None and limits[1]<>None:
- mask = lowerfcn(a,limits[0])*upperfcn(a,limits[1])
- s = float(N.add.reduce(N.ravel(a*mask)))
- n = float(N.add.reduce(N.ravel(mask)))
- return s/n
-
-
- def atvar(a,limits=None,inclusive=(1,1)):
- """
-Returns the sample variance of values in an array, (i.e., using N-1),
-ignoring values strictly outside the sequence passed to 'limits'.
-Note: either limit in the sequence, or the value of limits itself,
-can be set to None. The inclusive list/tuple determines whether the lower
-and upper limiting bounds (respectively) are open/exclusive (0) or
-closed/inclusive (1). ASSUMES A FLAT ARRAY (OR ELSE PREFLATTENS).
-
-Usage: atvar(a,limits=None,inclusive=(1,1))
-"""
- a = a.astype(N.float_)
- if limits == None or limits == [None,None]:
- return avar(a)
- assert type(limits) in [ListType,TupleType,N.ndarray], "Wrong type for limits in atvar"
- if inclusive[0]: lowerfcn = N.greater_equal
- else: lowerfcn = N.greater
- if inclusive[1]: upperfcn = N.less_equal
- else: upperfcn = N.less
- if limits[0] > N.maximum.reduce(N.ravel(a)) or limits[1] < N.minimum.reduce(N.ravel(a)):
- raise ValueError, "No array values within given limits (atvar)."
- elif limits[0]==None and limits[1]<>None:
- mask = upperfcn(a,limits[1])
- elif limits[0]<>None and limits[1]==None:
- mask = lowerfcn(a,limits[0])
- elif limits[0]<>None and limits[1]<>None:
- mask = lowerfcn(a,limits[0])*upperfcn(a,limits[1])
-
- a = N.compress(mask,a) # squish out excluded values
- return avar(a)
-
-
- def atmin(a,lowerlimit=None,dimension=None,inclusive=1):
- """
-Returns the minimum value of a, along dimension, including only values less
-than (or equal to, if inclusive=1) lowerlimit. If the limit is set to None,
-all values in the array are used.
-
-Usage: atmin(a,lowerlimit=None,dimension=None,inclusive=1)
-"""
- if inclusive: lowerfcn = N.greater
- else: lowerfcn = N.greater_equal
- if dimension == None:
- a = N.ravel(a)
- dimension = 0
- if lowerlimit == None:
- lowerlimit = N.minimum.reduce(N.ravel(a))-11
- biggest = N.maximum.reduce(N.ravel(a))
- ta = N.where(lowerfcn(a,lowerlimit),a,biggest)
- return N.minimum.reduce(ta,dimension)
-
-
- def atmax(a,upperlimit,dimension=None,inclusive=1):
- """
-Returns the maximum value of a, along dimension, including only values greater
-than (or equal to, if inclusive=1) upperlimit. If the limit is set to None,
-a limit larger than the max value in the array is used.
-
-Usage: atmax(a,upperlimit,dimension=None,inclusive=1)
-"""
- if inclusive: upperfcn = N.less
- else: upperfcn = N.less_equal
- if dimension == None:
- a = N.ravel(a)
- dimension = 0
- if upperlimit == None:
- upperlimit = N.maximum.reduce(N.ravel(a))+1
- smallest = N.minimum.reduce(N.ravel(a))
- ta = N.where(upperfcn(a,upperlimit),a,smallest)
- return N.maximum.reduce(ta,dimension)
-
-
- def atstdev(a,limits=None,inclusive=(1,1)):
- """
-Returns the standard deviation of all values in an array, ignoring values
-strictly outside the sequence passed to 'limits'. Note: either limit
-in the sequence, or the value of limits itself, can be set to None. The
-inclusive list/tuple determines whether the lower and upper limiting bounds
-(respectively) are open/exclusive (0) or closed/inclusive (1).
-
-Usage: atstdev(a,limits=None,inclusive=(1,1))
-"""
- return N.sqrt(tvar(a,limits,inclusive))
-
-
- def atsem(a,limits=None,inclusive=(1,1)):
- """
-Returns the standard error of the mean for the values in an array,
-(i.e., using N for the denominator), ignoring values strictly outside
-the sequence passed to 'limits'. Note: either limit in the sequence,
-or the value of limits itself, can be set to None. The inclusive list/tuple
-determines whether the lower and upper limiting bounds (respectively) are
-open/exclusive (0) or closed/inclusive (1).
-
-Usage: atsem(a,limits=None,inclusive=(1,1))
-"""
- sd = tstdev(a,limits,inclusive)
- if limits == None or limits == [None,None]:
- n = float(len(N.ravel(a)))
- limits = [min(a)-1, max(a)+1]
- assert type(limits) in [ListType,TupleType,N.ndarray], "Wrong type for limits in atsem"
- if inclusive[0]: lowerfcn = N.greater_equal
- else: lowerfcn = N.greater
- if inclusive[1]: upperfcn = N.less_equal
- else: upperfcn = N.less
- if limits[0] > N.maximum.reduce(N.ravel(a)) or limits[1] < N.minimum.reduce(N.ravel(a)):
- raise ValueError, "No array values within given limits (atsem)."
- elif limits[0]==None and limits[1]<>None:
- mask = upperfcn(a,limits[1])
- elif limits[0]<>None and limits[1]==None:
- mask = lowerfcn(a,limits[0])
- elif limits[0]<>None and limits[1]<>None:
- mask = lowerfcn(a,limits[0])*upperfcn(a,limits[1])
- term1 = N.add.reduce(N.ravel(a*a*mask))
- n = float(N.add.reduce(N.ravel(mask)))
- return sd/math.sqrt(n)
-
-
-#####################################
-############ AMOMENTS #############
-#####################################
-
- def amoment(a,moment=1,dimension=None):
- """
-Calculates the nth moment about the mean for a sample (defaults to the
-1st moment). Generally used to calculate coefficients of skewness and
-kurtosis. Dimension can equal None (ravel array first), an integer
-(the dimension over which to operate), or a sequence (operate over
-multiple dimensions).
-
-Usage: amoment(a,moment=1,dimension=None)
-Returns: appropriate moment along given dimension
-"""
- if dimension == None:
- a = N.ravel(a)
- dimension = 0
- if moment == 1:
- return 0.0
- else:
- mn = amean(a,dimension,1) # 1=keepdims
- s = N.power((a-mn),moment)
- return amean(s,dimension)
-
-
- def avariation(a,dimension=None):
- """
-Returns the coefficient of variation, as defined in CRC Standard
-Probability and Statistics, p.6. Dimension can equal None (ravel array
-first), an integer (the dimension over which to operate), or a
-sequence (operate over multiple dimensions).
-
-Usage: avariation(a,dimension=None)
-"""
- return 100.0*asamplestdev(a,dimension)/amean(a,dimension)
-
-
- def askew(a,dimension=None):
- """
-Returns the skewness of a distribution (normal ==> 0.0; >0 means extra
-weight in left tail). Use askewtest() to see if it's close enough.
-Dimension can equal None (ravel array first), an integer (the
-dimension over which to operate), or a sequence (operate over multiple
-dimensions).
-
-Usage: askew(a, dimension=None)
-Returns: skew of vals in a along dimension, returning ZERO where all vals equal
-"""
- denom = N.power(amoment(a,2,dimension),1.5)
- zero = N.equal(denom,0)
- if type(denom) == N.ndarray and asum(zero) <> 0:
- print "Number of zeros in askew: ",asum(zero)
- denom = denom + zero # prevent divide-by-zero
- return N.where(zero, 0, amoment(a,3,dimension)/denom)
-
-
- def akurtosis(a,dimension=None):
- """
-Returns the kurtosis of a distribution (normal ==> 3.0; >3 means
-heavier in the tails, and usually more peaked). Use akurtosistest()
-to see if it's close enough. Dimension can equal None (ravel array
-first), an integer (the dimension over which to operate), or a
-sequence (operate over multiple dimensions).
-
-Usage: akurtosis(a,dimension=None)
-Returns: kurtosis of values in a along dimension, and ZERO where all vals equal
-"""
- denom = N.power(amoment(a,2,dimension),2)
- zero = N.equal(denom,0)
- if type(denom) == N.ndarray and asum(zero) <> 0:
- print "Number of zeros in akurtosis: ",asum(zero)
- denom = denom + zero # prevent divide-by-zero
- return N.where(zero,0,amoment(a,4,dimension)/denom)
-
-
- def adescribe(inarray,dimension=None):
- """
-Returns several descriptive statistics of the passed array. Dimension
-can equal None (ravel array first), an integer (the dimension over
-which to operate), or a sequence (operate over multiple dimensions).
-
-Usage: adescribe(inarray,dimension=None)
-Returns: n, (min,max), mean, standard deviation, skew, kurtosis
-"""
- if dimension == None:
- inarray = N.ravel(inarray)
- dimension = 0
- n = inarray.shape[dimension]
- mm = (N.minimum.reduce(inarray),N.maximum.reduce(inarray))
- m = amean(inarray,dimension)
- sd = astdev(inarray,dimension)
- skew = askew(inarray,dimension)
- kurt = akurtosis(inarray,dimension)
- return n, mm, m, sd, skew, kurt
-
-
-#####################################
-######## NORMALITY TESTS ##########
-#####################################
-
- def askewtest(a,dimension=None):
- """
-Tests whether the skew is significantly different from a normal
-distribution. Dimension can equal None (ravel array first), an
-integer (the dimension over which to operate), or a sequence (operate
-over multiple dimensions).
-
-Usage: askewtest(a,dimension=None)
-Returns: z-score and 2-tail z-probability
-"""
- if dimension == None:
- a = N.ravel(a)
- dimension = 0
- b2 = askew(a,dimension)
- n = float(a.shape[dimension])
- y = b2 * N.sqrt(((n+1)*(n+3)) / (6.0*(n-2)) )
- beta2 = ( 3.0*(n*n+27*n-70)*(n+1)*(n+3) ) / ( (n-2.0)*(n+5)*(n+7)*(n+9) )
- W2 = -1 + N.sqrt(2*(beta2-1))
- delta = 1/N.sqrt(N.log(N.sqrt(W2)))
- alpha = N.sqrt(2/(W2-1))
- y = N.where(y==0,1,y)
- Z = delta*N.log(y/alpha + N.sqrt((y/alpha)**2+1))
- return Z, (1.0-zprob(Z))*2
-
-
- def akurtosistest(a,dimension=None):
- """
-Tests whether a dataset has normal kurtosis (i.e.,
-kurtosis=3(n-1)/(n+1)) Valid only for n>20. Dimension can equal None
-(ravel array first), an integer (the dimension over which to operate),
-or a sequence (operate over multiple dimensions).
-
-Usage: akurtosistest(a,dimension=None)
-Returns: z-score and 2-tail z-probability, returns 0 for bad pixels
-"""
- if dimension == None:
- a = N.ravel(a)
- dimension = 0
- n = float(a.shape[dimension])
- if n<20:
- print "akurtosistest only valid for n>=20 ... continuing anyway, n=",n
- b2 = akurtosis(a,dimension)
- E = 3.0*(n-1) /(n+1)
- varb2 = 24.0*n*(n-2)*(n-3) / ((n+1)*(n+1)*(n+3)*(n+5))
- x = (b2-E)/N.sqrt(varb2)
- sqrtbeta1 = 6.0*(n*n-5*n+2)/((n+7)*(n+9)) * N.sqrt((6.0*(n+3)*(n+5))/
- (n*(n-2)*(n-3)))
- A = 6.0 + 8.0/sqrtbeta1 *(2.0/sqrtbeta1 + N.sqrt(1+4.0/(sqrtbeta1**2)))
- term1 = 1 -2/(9.0*A)
- denom = 1 +x*N.sqrt(2/(A-4.0))
- denom = N.where(N.less(denom,0), 99, denom)
- term2 = N.where(N.equal(denom,0), term1, N.power((1-2.0/A)/denom,1/3.0))
- Z = ( term1 - term2 ) / N.sqrt(2/(9.0*A))
- Z = N.where(N.equal(denom,99), 0, Z)
- return Z, (1.0-zprob(Z))*2
-
-
- def anormaltest(a,dimension=None):
- """
-Tests whether skew and/OR kurtosis of dataset differs from normal
-curve. Can operate over multiple dimensions. Dimension can equal
-None (ravel array first), an integer (the dimension over which to
-operate), or a sequence (operate over multiple dimensions).
-
-Usage: anormaltest(a,dimension=None)
-Returns: z-score and 2-tail probability
-"""
- if dimension == None:
- a = N.ravel(a)
- dimension = 0
- s,p = askewtest(a,dimension)
- k,p = akurtosistest(a,dimension)
- k2 = N.power(s,2) + N.power(k,2)
- return k2, achisqprob(k2,2)
-
-
-#####################################
-###### AFREQUENCY FUNCTIONS #######
-#####################################
-
- def aitemfreq(a):
- """
-Returns a 2D array of item frequencies. Column 1 contains item values,
-column 2 contains their respective counts. Assumes a 1D array is passed.
-@@@sorting OK?
-
-Usage: aitemfreq(a)
-Returns: a 2D frequency table (col [0:n-1]=scores, col n=frequencies)
-"""
- scores = pstat.aunique(a)
- scores = N.sort(scores)
- freq = N.zeros(len(scores))
- for i in range(len(scores)):
- freq[i] = N.add.reduce(N.equal(a,scores[i]))
- return N.array(pstat.aabut(scores, freq))
-
-
- def ascoreatpercentile (inarray, percent):
- """
-Usage: ascoreatpercentile(inarray,percent) 0<percent<100
-Returns: score at given percentile, relative to inarray distribution
-"""
- percent = percent / 100.0
- targetcf = percent*len(inarray)
- h, lrl, binsize, extras = histogram(inarray)
- cumhist = cumsum(h*1)
- for i in range(len(cumhist)):
- if cumhist[i] >= targetcf:
- break
- score = binsize * ((targetcf - cumhist[i-1]) / float(h[i])) + (lrl+binsize*i)
- return score
-
-
- def apercentileofscore (inarray,score,histbins=10,defaultlimits=None):
- """
-Note: result of this function depends on the values used to histogram
-the data(!).
-
-Usage: apercentileofscore(inarray,score,histbins=10,defaultlimits=None)
-Returns: percentile-position of score (0-100) relative to inarray
-"""
- h, lrl, binsize, extras = histogram(inarray,histbins,defaultlimits)
- cumhist = cumsum(h*1)
- i = int((score - lrl)/float(binsize))
- pct = (cumhist[i-1]+((score-(lrl+binsize*i))/float(binsize))*h[i])/float(len(inarray)) * 100
- return pct
-
-
- def ahistogram (inarray,numbins=10,defaultlimits=None,printextras=1):
- """
-Returns (i) an array of histogram bin counts, (ii) the smallest value
-of the histogram binning, and (iii) the bin width (the last 2 are not
-necessarily integers). Default number of bins is 10. Defaultlimits
-can be None (the routine picks bins spanning all the numbers in the
-inarray) or a 2-sequence (lowerlimit, upperlimit). Returns all of the
-following: array of bin values, lowerreallimit, binsize, extrapoints.
-
-Usage: ahistogram(inarray,numbins=10,defaultlimits=None,printextras=1)
-Returns: (array of bin counts, bin-minimum, min-width, #-points-outside-range)
-"""
- inarray = N.ravel(inarray) # flatten any >1D arrays
- if (defaultlimits <> None):
- lowerreallimit = defaultlimits[0]
- upperreallimit = defaultlimits[1]
- binsize = (upperreallimit-lowerreallimit) / float(numbins)
- else:
- Min = N.minimum.reduce(inarray)
- Max = N.maximum.reduce(inarray)
- estbinwidth = float(Max - Min)/float(numbins) + 1e-6
- binsize = (Max-Min+estbinwidth)/float(numbins)
- lowerreallimit = Min - binsize/2.0 #lower real limit,1st bin
- bins = N.zeros(numbins)
- extrapoints = 0
- for num in inarray:
- try:
- if (num-lowerreallimit) < 0:
- extrapoints = extrapoints + 1
- else:
- bintoincrement = int((num-lowerreallimit) / float(binsize))
- bins[bintoincrement] = bins[bintoincrement] + 1
- except: # point outside lower/upper limits
- extrapoints = extrapoints + 1
- if (extrapoints > 0 and printextras == 1):
- print '\nPoints outside given histogram range =',extrapoints
- return (bins, lowerreallimit, binsize, extrapoints)
-
-
- def acumfreq(a,numbins=10,defaultreallimits=None):
- """
-Returns a cumulative frequency histogram, using the histogram function.
-Defaultreallimits can be None (use all data), or a 2-sequence containing
-lower and upper limits on values to include.
-
-Usage: acumfreq(a,numbins=10,defaultreallimits=None)
-Returns: array of cumfreq bin values, lowerreallimit, binsize, extrapoints
-"""
- h,l,b,e = histogram(a,numbins,defaultreallimits)
- cumhist = cumsum(h*1)
- return cumhist,l,b,e
-
-
- def arelfreq(a,numbins=10,defaultreallimits=None):
- """
-Returns a relative frequency histogram, using the histogram function.
-Defaultreallimits can be None (use all data), or a 2-sequence containing
-lower and upper limits on values to include.
-
-Usage: arelfreq(a,numbins=10,defaultreallimits=None)
-Returns: array of cumfreq bin values, lowerreallimit, binsize, extrapoints
-"""
- h,l,b,e = histogram(a,numbins,defaultreallimits)
- h = N.array(h/float(a.shape[0]))
- return h,l,b,e
-
-
-#####################################
-###### AVARIABILITY FUNCTIONS #####
-#####################################
-
- def aobrientransform(*args):
- """
-Computes a transform on input data (any number of columns). Used to
-test for homogeneity of variance prior to running one-way stats. Each
-array in *args is one level of a factor. If an F_oneway() run on the
-transformed data and found significant, variances are unequal. From
-Maxwell and Delaney, p.112.
-
-Usage: aobrientransform(*args) *args = 1D arrays, one per level of factor
-Returns: transformed data for use in an ANOVA
-"""
- TINY = 1e-10
- k = len(args)
- n = N.zeros(k,N.float_)
- v = N.zeros(k,N.float_)
- m = N.zeros(k,N.float_)
- nargs = []
- for i in range(k):
- nargs.append(args[i].astype(N.float_))
- n[i] = float(len(nargs[i]))
- v[i] = var(nargs[i])
- m[i] = mean(nargs[i])
- for j in range(k):
- for i in range(n[j]):
- t1 = (n[j]-1.5)*n[j]*(nargs[j][i]-m[j])**2
- t2 = 0.5*v[j]*(n[j]-1.0)
- t3 = (n[j]-1.0)*(n[j]-2.0)
- nargs[j][i] = (t1-t2) / float(t3)
- check = 1
- for j in range(k):
- if v[j] - mean(nargs[j]) > TINY:
- check = 0
- if check <> 1:
- raise ValueError, 'Lack of convergence in obrientransform.'
- else:
- return N.array(nargs)
-
-
- def asamplevar (inarray,dimension=None,keepdims=0):
- """
-Returns the sample standard deviation of the values in the passed
-array (i.e., using N). Dimension can equal None (ravel array first),
-an integer (the dimension over which to operate), or a sequence
-(operate over multiple dimensions). Set keepdims=1 to return an array
-with the same number of dimensions as inarray.
-
-Usage: asamplevar(inarray,dimension=None,keepdims=0)
-"""
- if dimension == None:
- inarray = N.ravel(inarray)
- dimension = 0
- if dimension == 1:
- mn = amean(inarray,dimension)[:,N.NewAxis]
- else:
- mn = amean(inarray,dimension,keepdims=1)
- deviations = inarray - mn
- if type(dimension) == ListType:
- n = 1
- for d in dimension:
- n = n*inarray.shape[d]
- else:
- n = inarray.shape[dimension]
- svar = ass(deviations,dimension,keepdims) / float(n)
- return svar
-
-
- def asamplestdev (inarray, dimension=None, keepdims=0):
- """
-Returns the sample standard deviation of the values in the passed
-array (i.e., using N). Dimension can equal None (ravel array first),
-an integer (the dimension over which to operate), or a sequence
-(operate over multiple dimensions). Set keepdims=1 to return an array
-with the same number of dimensions as inarray.
-
-Usage: asamplestdev(inarray,dimension=None,keepdims=0)
-"""
- return N.sqrt(asamplevar(inarray,dimension,keepdims))
-
-
- def asignaltonoise(instack,dimension=0):
- """
-Calculates signal-to-noise. Dimension can equal None (ravel array
-first), an integer (the dimension over which to operate), or a
-sequence (operate over multiple dimensions).
-
-Usage: asignaltonoise(instack,dimension=0):
-Returns: array containing the value of (mean/stdev) along dimension,
- or 0 when stdev=0
-"""
- m = mean(instack,dimension)
- sd = stdev(instack,dimension)
- return N.where(sd==0,0,m/sd)
-
-
- def acov (x,y, dimension=None,keepdims=0):
- """
-Returns the estimated covariance of the values in the passed
-array (i.e., N-1). Dimension can equal None (ravel array first), an
-integer (the dimension over which to operate), or a sequence (operate
-over multiple dimensions). Set keepdims=1 to return an array with the
-same number of dimensions as inarray.
-
-Usage: acov(x,y,dimension=None,keepdims=0)
-"""
- if dimension == None:
- x = N.ravel(x)
- y = N.ravel(y)
- dimension = 0
- xmn = amean(x,dimension,1) # keepdims
- xdeviations = x - xmn
- ymn = amean(y,dimension,1) # keepdims
- ydeviations = y - ymn
- if type(dimension) == ListType:
- n = 1
- for d in dimension:
- n = n*x.shape[d]
- else:
- n = x.shape[dimension]
- covar = N.sum(xdeviations*ydeviations)/float(n-1)
- return covar
-
-
- def avar (inarray, dimension=None,keepdims=0):
- """
-Returns the estimated population variance of the values in the passed
-array (i.e., N-1). Dimension can equal None (ravel array first), an
-integer (the dimension over which to operate), or a sequence (operate
-over multiple dimensions). Set keepdims=1 to return an array with the
-same number of dimensions as inarray.
-
-Usage: avar(inarray,dimension=None,keepdims=0)
-"""
- if dimension == None:
- inarray = N.ravel(inarray)
- dimension = 0
- mn = amean(inarray,dimension,1)
- deviations = inarray - mn
- if type(dimension) == ListType:
- n = 1
- for d in dimension:
- n = n*inarray.shape[d]
- else:
- n = inarray.shape[dimension]
- var = ass(deviations,dimension,keepdims)/float(n-1)
- return var
-
-
- def astdev (inarray, dimension=None, keepdims=0):
- """
-Returns the estimated population standard deviation of the values in
-the passed array (i.e., N-1). Dimension can equal None (ravel array
-first), an integer (the dimension over which to operate), or a
-sequence (operate over multiple dimensions). Set keepdims=1 to return
-an array with the same number of dimensions as inarray.
-
-Usage: astdev(inarray,dimension=None,keepdims=0)
-"""
- return N.sqrt(avar(inarray,dimension,keepdims))
-
-
- def asterr (inarray, dimension=None, keepdims=0):
- """
-Returns the estimated population standard error of the values in the
-passed array (i.e., N-1). Dimension can equal None (ravel array
-first), an integer (the dimension over which to operate), or a
-sequence (operate over multiple dimensions). Set keepdims=1 to return
-an array with the same number of dimensions as inarray.
-
-Usage: asterr(inarray,dimension=None,keepdims=0)
-"""
- if dimension == None:
- inarray = N.ravel(inarray)
- dimension = 0
- return astdev(inarray,dimension,keepdims) / float(N.sqrt(inarray.shape[dimension]))
-
-
- def asem (inarray, dimension=None, keepdims=0):
- """
-Returns the standard error of the mean (i.e., using N) of the values
-in the passed array. Dimension can equal None (ravel array first), an
-integer (the dimension over which to operate), or a sequence (operate
-over multiple dimensions). Set keepdims=1 to return an array with the
-same number of dimensions as inarray.
-
-Usage: asem(inarray,dimension=None, keepdims=0)
-"""
- if dimension == None:
- inarray = N.ravel(inarray)
- dimension = 0
- if type(dimension) == ListType:
- n = 1
- for d in dimension:
- n = n*inarray.shape[d]
- else:
- n = inarray.shape[dimension]
- s = asamplestdev(inarray,dimension,keepdims) / N.sqrt(n-1)
- return s
-
-
- def az (a, score):
- """
-Returns the z-score of a given input score, given thearray from which
-that score came. Not appropriate for population calculations, nor for
-arrays > 1D.
-
-Usage: az(a, score)
-"""
- z = (score-amean(a)) / asamplestdev(a)
- return z
-
-
- def azs (a):
- """
-Returns a 1D array of z-scores, one for each score in the passed array,
-computed relative to the passed array.
-
-Usage: azs(a)
-"""
- zscores = []
- for item in a:
- zscores.append(z(a,item))
- return N.array(zscores)
-
-
- def azmap (scores, compare, dimension=0):
- """
-Returns an array of z-scores the shape of scores (e.g., [x,y]), compared to
-array passed to compare (e.g., [time,x,y]). Assumes collapsing over dim 0
-of the compare array.
-
-Usage: azs(scores, compare, dimension=0)
-"""
- mns = amean(compare,dimension)
- sstd = asamplestdev(compare,0)
- return (scores - mns) / sstd
-
-
-#####################################
-####### ATRIMMING FUNCTIONS #######
-#####################################
-
-## deleted around() as it's in numpy now
-
- def athreshold(a,threshmin=None,threshmax=None,newval=0):
- """
-Like Numeric.clip() except that values <threshmid or >threshmax are replaced
-by newval instead of by threshmin/threshmax (respectively).
-
-Usage: athreshold(a,threshmin=None,threshmax=None,newval=0)
-Returns: a, with values <threshmin or >threshmax replaced with newval
-"""
- mask = N.zeros(a.shape)
- if threshmin <> None:
- mask = mask + N.where(a<threshmin,1,0)
- if threshmax <> None:
- mask = mask + N.where(a>threshmax,1,0)
- mask = N.clip(mask,0,1)
- return N.where(mask,newval,a)
-
-
- def atrimboth (a,proportiontocut):
- """
-Slices off the passed proportion of items from BOTH ends of the passed
-array (i.e., with proportiontocut=0.1, slices 'leftmost' 10% AND
-'rightmost' 10% of scores. You must pre-sort the array if you want
-"proper" trimming. Slices off LESS if proportion results in a
-non-integer slice index (i.e., conservatively slices off
-proportiontocut).
-
-Usage: atrimboth (a,proportiontocut)
-Returns: trimmed version of array a
-"""
- lowercut = int(proportiontocut*len(a))
- uppercut = len(a) - lowercut
- return a[lowercut:uppercut]
-
-
- def atrim1 (a,proportiontocut,tail='right'):
- """
-Slices off the passed proportion of items from ONE end of the passed
-array (i.e., if proportiontocut=0.1, slices off 'leftmost' or 'rightmost'
-10% of scores). Slices off LESS if proportion results in a non-integer
-slice index (i.e., conservatively slices off proportiontocut).
-
-Usage: atrim1(a,proportiontocut,tail='right') or set tail='left'
-Returns: trimmed version of array a
-"""
- if string.lower(tail) == 'right':
- lowercut = 0
- uppercut = len(a) - int(proportiontocut*len(a))
- elif string.lower(tail) == 'left':
- lowercut = int(proportiontocut*len(a))
- uppercut = len(a)
- return a[lowercut:uppercut]
-
-
-#####################################
-##### ACORRELATION FUNCTIONS ######
-#####################################
-
- def acovariance(X):
- """
-Computes the covariance matrix of a matrix X. Requires a 2D matrix input.
-
-Usage: acovariance(X)
-Returns: covariance matrix of X
-"""
- if len(X.shape) <> 2:
- raise TypeError, "acovariance requires 2D matrices"
- n = X.shape[0]
- mX = amean(X,0)
- return N.dot(N.transpose(X),X) / float(n) - N.multiply.outer(mX,mX)
-
-
- def acorrelation(X):
- """
-Computes the correlation matrix of a matrix X. Requires a 2D matrix input.
-
-Usage: acorrelation(X)
-Returns: correlation matrix of X
-"""
- C = acovariance(X)
- V = N.diagonal(C)
- return C / N.sqrt(N.multiply.outer(V,V))
-
-
- def apaired(x,y):
- """
-Interactively determines the type of data in x and y, and then runs the
-appropriated statistic for paired group data.
-
-Usage: apaired(x,y) x,y = the two arrays of values to be compared
-Returns: appropriate statistic name, value, and probability
-"""
- samples = ''
- while samples not in ['i','r','I','R','c','C']:
- print '\nIndependent or related samples, or correlation (i,r,c): ',
- samples = raw_input()
-
- if samples in ['i','I','r','R']:
- print '\nComparing variances ...',
-# USE O'BRIEN'S TEST FOR HOMOGENEITY OF VARIANCE, Maxwell & delaney, p.112
- r = obrientransform(x,y)
- f,p = F_oneway(pstat.colex(r,0),pstat.colex(r,1))
- if p<0.05:
- vartype='unequal, p='+str(round(p,4))
- else:
- vartype='equal'
- print vartype
- if samples in ['i','I']:
- if vartype[0]=='e':
- t,p = ttest_ind(x,y,None,0)
- print '\nIndependent samples t-test: ', round(t,4),round(p,4)
- else:
- if len(x)>20 or len(y)>20:
- z,p = ranksums(x,y)
- print '\nRank Sums test (NONparametric, n>20): ', round(z,4),round(p,4)
- else:
- u,p = mannwhitneyu(x,y)
- print '\nMann-Whitney U-test (NONparametric, ns<20): ', round(u,4),round(p,4)
-
- else: # RELATED SAMPLES
- if vartype[0]=='e':
- t,p = ttest_rel(x,y,0)
- print '\nRelated samples t-test: ', round(t,4),round(p,4)
- else:
- t,p = ranksums(x,y)
- print '\nWilcoxon T-test (NONparametric): ', round(t,4),round(p,4)
- else: # CORRELATION ANALYSIS
- corrtype = ''
- while corrtype not in ['c','C','r','R','d','D']:
- print '\nIs the data Continuous, Ranked, or Dichotomous (c,r,d): ',
- corrtype = raw_input()
- if corrtype in ['c','C']:
- m,b,r,p,see = linregress(x,y)
- print '\nLinear regression for continuous variables ...'
- lol = [['Slope','Intercept','r','Prob','SEestimate'],[round(m,4),round(b,4),round(r,4),round(p,4),round(see,4)]]
- pstat.printcc(lol)
- elif corrtype in ['r','R']:
- r,p = spearmanr(x,y)
- print '\nCorrelation for ranked variables ...'
- print "Spearman's r: ",round(r,4),round(p,4)
- else: # DICHOTOMOUS
- r,p = pointbiserialr(x,y)
- print '\nAssuming x contains a dichotomous variable ...'
- print 'Point Biserial r: ',round(r,4),round(p,4)
- print '\n\n'
- return None
-
-
- def dices(x,y):
- """
-Calculates Dice's coefficient ... (2*number of common terms)/(number of terms in x +
-number of terms in y). Returns a value between 0 (orthogonal) and 1.
-
-Usage: dices(x,y)
-"""
- import sets
- x = sets.Set(x)
- y = sets.Set(y)
- common = len(x.intersection(y))
- total = float(len(x) + len(y))
- return 2*common/total
-
-
- def icc(x,y=None,verbose=0):
- """
-Calculates intraclass correlation coefficients using simple, Type I sums of squares.
-If only one variable is passed, assumed it's an Nx2 matrix
-
-Usage: icc(x,y=None,verbose=0)
-Returns: icc rho, prob ####PROB IS A GUESS BASED ON PEARSON
-"""
- TINY = 1.0e-20
- if y:
- all = N.concatenate([x,y],0)
- else:
- all = x+0
- x = all[:,0]
- y = all[:,1]
- totalss = ass(all-mean(all))
- pairmeans = (x+y)/2.
- withinss = ass(x-pairmeans) + ass(y-pairmeans)
- withindf = float(len(x))
- betwdf = float(len(x)-1)
- withinms = withinss / withindf
- betweenms = (totalss-withinss) / betwdf
- rho = (betweenms-withinms)/(withinms+betweenms)
- t = rho*math.sqrt(betwdf/((1.0-rho+TINY)*(1.0+rho+TINY)))
- prob = abetai(0.5*betwdf,0.5,betwdf/(betwdf+t*t),verbose)
- return rho, prob
-
-
- def alincc(x,y):
- """
-Calculates Lin's concordance correlation coefficient.
-
-Usage: alincc(x,y) where x, y are equal-length arrays
-Returns: Lin's CC
-"""
- x = N.ravel(x)
- y = N.ravel(y)
- covar = acov(x,y)*(len(x)-1)/float(len(x)) # correct denom to n
- xvar = avar(x)*(len(x)-1)/float(len(x)) # correct denom to n
- yvar = avar(y)*(len(y)-1)/float(len(y)) # correct denom to n
- lincc = (2 * covar) / ((xvar+yvar) +((amean(x)-amean(y))**2))
- return lincc
-
-
- def apearsonr(x,y,verbose=1):
- """
-Calculates a Pearson correlation coefficient and returns p. Taken
-from Heiman's Basic Statistics for the Behav. Sci (2nd), p.195.
-
-Usage: apearsonr(x,y,verbose=1) where x,y are equal length arrays
-Returns: Pearson's r, two-tailed p-value
-"""
- TINY = 1.0e-20
- n = len(x)
- xmean = amean(x)
- ymean = amean(y)
- r_num = n*(N.add.reduce(x*y)) - N.add.reduce(x)*N.add.reduce(y)
- r_den = math.sqrt((n*ass(x) - asquare_of_sums(x))*(n*ass(y)-asquare_of_sums(y)))
- r = (r_num / r_den)
- df = n-2
- t = r*math.sqrt(df/((1.0-r+TINY)*(1.0+r+TINY)))
- prob = abetai(0.5*df,0.5,df/(df+t*t),verbose)
- return r,prob
-
-
- def aspearmanr(x,y):
- """
-Calculates a Spearman rank-order correlation coefficient. Taken
-from Heiman's Basic Statistics for the Behav. Sci (1st), p.192.
-
-Usage: aspearmanr(x,y) where x,y are equal-length arrays
-Returns: Spearman's r, two-tailed p-value
-"""
- TINY = 1e-30
- n = len(x)
- rankx = rankdata(x)
- ranky = rankdata(y)
- dsq = N.add.reduce((rankx-ranky)**2)
- rs = 1 - 6*dsq / float(n*(n**2-1))
- t = rs * math.sqrt((n-2) / ((rs+1.0)*(1.0-rs)))
- df = n-2
- probrs = abetai(0.5*df,0.5,df/(df+t*t))
-# probability values for rs are from part 2 of the spearman function in
-# Numerical Recipies, p.510. They close to tables, but not exact.(?)
- return rs, probrs
-
-
- def apointbiserialr(x,y):
- """
-Calculates a point-biserial correlation coefficient and the associated
-probability value. Taken from Heiman's Basic Statistics for the Behav.
-Sci (1st), p.194.
-
-Usage: apointbiserialr(x,y) where x,y are equal length arrays
-Returns: Point-biserial r, two-tailed p-value
-"""
- TINY = 1e-30
- categories = pstat.aunique(x)
- data = pstat.aabut(x,y)
- if len(categories) <> 2:
- raise ValueError, "Exactly 2 categories required (in x) for pointbiserialr()."
- else: # there are 2 categories, continue
- codemap = pstat.aabut(categories,N.arange(2))
- recoded = pstat.arecode(data,codemap,0)
- x = pstat.alinexand(data,0,categories[0])
- y = pstat.alinexand(data,0,categories[1])
- xmean = amean(pstat.acolex(x,1))
- ymean = amean(pstat.acolex(y,1))
- n = len(data)
- adjust = math.sqrt((len(x)/float(n))*(len(y)/float(n)))
- rpb = (ymean - xmean)/asamplestdev(pstat.acolex(data,1))*adjust
- df = n-2
- t = rpb*math.sqrt(df/((1.0-rpb+TINY)*(1.0+rpb+TINY)))
- prob = abetai(0.5*df,0.5,df/(df+t*t))
- return rpb, prob
-
-
- def akendalltau(x,y):
- """
-Calculates Kendall's tau ... correlation of ordinal data. Adapted
-from function kendl1 in Numerical Recipies. Needs good test-cases.@@@
-
-Usage: akendalltau(x,y)
-Returns: Kendall's tau, two-tailed p-value
-"""
- n1 = 0
- n2 = 0
- iss = 0
- for j in range(len(x)-1):
- for k in range(j,len(y)):
- a1 = x[j] - x[k]
- a2 = y[j] - y[k]
- aa = a1 * a2
- if (aa): # neither array has a tie
- n1 = n1 + 1
- n2 = n2 + 1
- if aa > 0:
- iss = iss + 1
- else:
- iss = iss -1
- else:
- if (a1):
- n1 = n1 + 1
- else:
- n2 = n2 + 1
- tau = iss / math.sqrt(n1*n2)
- svar = (4.0*len(x)+10.0) / (9.0*len(x)*(len(x)-1))
- z = tau / math.sqrt(svar)
- prob = erfcc(abs(z)/1.4142136)
- return tau, prob
-
-
- def alinregress(*args):
- """
-Calculates a regression line on two arrays, x and y, corresponding to x,y
-pairs. If a single 2D array is passed, alinregress finds dim with 2 levels
-and splits data into x,y pairs along that dim.
-
-Usage: alinregress(*args) args=2 equal-length arrays, or one 2D array
-Returns: slope, intercept, r, two-tailed prob, sterr-of-the-estimate, n
-"""
- TINY = 1.0e-20
- if len(args) == 1: # more than 1D array?
- args = args[0]
- if len(args) == 2:
- x = args[0]
- y = args[1]
- else:
- x = args[:,0]
- y = args[:,1]
- else:
- x = args[0]
- y = args[1]
- n = len(x)
- xmean = amean(x)
- ymean = amean(y)
- r_num = n*(N.add.reduce(x*y)) - N.add.reduce(x)*N.add.reduce(y)
- r_den = math.sqrt((n*ass(x) - asquare_of_sums(x))*(n*ass(y)-asquare_of_sums(y)))
- r = r_num / r_den
- z = 0.5*math.log((1.0+r+TINY)/(1.0-r+TINY))
- df = n-2
- t = r*math.sqrt(df/((1.0-r+TINY)*(1.0+r+TINY)))
- prob = abetai(0.5*df,0.5,df/(df+t*t))
- slope = r_num / (float(n)*ass(x) - asquare_of_sums(x))
- intercept = ymean - slope*xmean
- sterrest = math.sqrt(1-r*r)*asamplestdev(y)
- return slope, intercept, r, prob, sterrest, n
-
- def amasslinregress(*args):
- """
-Calculates a regression line on one 1D array (x) and one N-D array (y).
-
-Returns: slope, intercept, r, two-tailed prob, sterr-of-the-estimate, n
-"""
- TINY = 1.0e-20
- if len(args) == 1: # more than 1D array?
- args = args[0]
- if len(args) == 2:
- x = N.ravel(args[0])
- y = args[1]
- else:
- x = N.ravel(args[:,0])
- y = args[:,1]
- else:
- x = args[0]
- y = args[1]
- x = x.astype(N.float_)
- y = y.astype(N.float_)
- n = len(x)
- xmean = amean(x)
- ymean = amean(y,0)
- shp = N.ones(len(y.shape))
- shp[0] = len(x)
- x.shape = shp
- print x.shape, y.shape
- r_num = n*(N.add.reduce(x*y,0)) - N.add.reduce(x)*N.add.reduce(y,0)
- r_den = N.sqrt((n*ass(x) - asquare_of_sums(x))*(n*ass(y,0)-asquare_of_sums(y,0)))
- zerodivproblem = N.equal(r_den,0)
- r_den = N.where(zerodivproblem,1,r_den) # avoid zero-division in 1st place
- r = r_num / r_den # need to do this nicely for matrix division
- r = N.where(zerodivproblem,0.0,r)
- z = 0.5*N.log((1.0+r+TINY)/(1.0-r+TINY))
- df = n-2
- t = r*N.sqrt(df/((1.0-r+TINY)*(1.0+r+TINY)))
- prob = abetai(0.5*df,0.5,df/(df+t*t))
-
- ss = float(n)*ass(x)-asquare_of_sums(x)
- s_den = N.where(ss==0,1,ss) # avoid zero-division in 1st place
- slope = r_num / s_den
- intercept = ymean - slope*xmean
- sterrest = N.sqrt(1-r*r)*asamplestdev(y,0)
- return slope, intercept, r, prob, sterrest, n
-
-
-#####################################
-##### AINFERENTIAL STATISTICS #####
-#####################################
-
- def attest_1samp(a,popmean,printit=0,name='Sample',writemode='a'):
- """
-Calculates the t-obtained for the independent samples T-test on ONE group
-of scores a, given a population mean. If printit=1, results are printed
-to the screen. If printit='filename', the results are output to 'filename'
-using the given writemode (default=append). Returns t-value, and prob.
-
-Usage: attest_1samp(a,popmean,Name='Sample',printit=0,writemode='a')
-Returns: t-value, two-tailed prob
-"""
- if type(a) != N.ndarray:
- a = N.array(a)
- x = amean(a)
- v = avar(a)
- n = len(a)
- df = n-1
- svar = ((n-1)*v) / float(df)
- t = (x-popmean)/math.sqrt(svar*(1.0/n))
- prob = abetai(0.5*df,0.5,df/(df+t*t))
-
- if printit <> 0:
- statname = 'Single-sample T-test.'
- outputpairedstats(printit,writemode,
- 'Population','--',popmean,0,0,0,
- name,n,x,v,N.minimum.reduce(N.ravel(a)),
- N.maximum.reduce(N.ravel(a)),
- statname,t,prob)
- return t,prob
-
-
- def attest_ind (a, b, dimension=None, printit=0, name1='Samp1', name2='Samp2',writemode='a'):
- """
-Calculates the t-obtained T-test on TWO INDEPENDENT samples of scores
-a, and b. From Numerical Recipies, p.483. If printit=1, results are
-printed to the screen. If printit='filename', the results are output
-to 'filename' using the given writemode (default=append). Dimension
-can equal None (ravel array first), or an integer (the dimension over
-which to operate on a and b).
-
-Usage: attest_ind (a,b,dimension=None,printit=0,
- Name1='Samp1',Name2='Samp2',writemode='a')
-Returns: t-value, two-tailed p-value
-"""
- if dimension == None:
- a = N.ravel(a)
- b = N.ravel(b)
- dimension = 0
- x1 = amean(a,dimension)
- x2 = amean(b,dimension)
- v1 = avar(a,dimension)
- v2 = avar(b,dimension)
- n1 = a.shape[dimension]
- n2 = b.shape[dimension]
- df = n1+n2-2
- svar = ((n1-1)*v1+(n2-1)*v2) / float(df)
- zerodivproblem = N.equal(svar,0)
- svar = N.where(zerodivproblem,1,svar) # avoid zero-division in 1st place
- t = (x1-x2)/N.sqrt(svar*(1.0/n1 + 1.0/n2)) # N-D COMPUTATION HERE!!!!!!
- t = N.where(zerodivproblem,1.0,t) # replace NaN/wrong t-values with 1.0
- probs = abetai(0.5*df,0.5,float(df)/(df+t*t))
-
- if type(t) == N.ndarray:
- probs = N.reshape(probs,t.shape)
- if probs.shape == (1,):
- probs = probs[0]
-
- if printit <> 0:
- if type(t) == N.ndarray:
- t = t[0]
- if type(probs) == N.ndarray:
- probs = probs[0]
- statname = 'Independent samples T-test.'
- outputpairedstats(printit,writemode,
- name1,n1,x1,v1,N.minimum.reduce(N.ravel(a)),
- N.maximum.reduce(N.ravel(a)),
- name2,n2,x2,v2,N.minimum.reduce(N.ravel(b)),
- N.maximum.reduce(N.ravel(b)),
- statname,t,probs)
- return
- return t, probs
-
- def ap2t(pval,df):
- """
-Tries to compute a t-value from a p-value (or pval array) and associated df.
-SLOW for large numbers of elements(!) as it re-computes p-values 20 times
-(smaller step-sizes) at which point it decides it's done. Keeps the signs
-of the input array. Returns 1000 (or -1000) if t>100.
-
-Usage: ap2t(pval,df)
-Returns: an array of t-values with the shape of pval
- """
- pval = N.array(pval)
- signs = N.sign(pval)
- pval = abs(pval)
- t = N.ones(pval.shape,N.float_)*50
- step = N.ones(pval.shape,N.float_)*25
- print "Initial ap2t() prob calc"
- prob = abetai(0.5*df,0.5,float(df)/(df+t*t))
- print 'ap2t() iter: ',
- for i in range(10):
- print i,' ',
- t = N.where(pval<prob,t+step,t-step)
- prob = abetai(0.5*df,0.5,float(df)/(df+t*t))
- step = step/2
- print
- # since this is an ugly hack, we get ugly boundaries
- t = N.where(t>99.9,1000,t) # hit upper-boundary
- t = t+signs
- return t #, prob, pval
-
-
- def attest_rel (a,b,dimension=None,printit=0,name1='Samp1',name2='Samp2',writemode='a'):
- """
-Calculates the t-obtained T-test on TWO RELATED samples of scores, a
-and b. From Numerical Recipies, p.483. If printit=1, results are
-printed to the screen. If printit='filename', the results are output
-to 'filename' using the given writemode (default=append). Dimension
-can equal None (ravel array first), or an integer (the dimension over
-which to operate on a and b).
-
-Usage: attest_rel(a,b,dimension=None,printit=0,
- name1='Samp1',name2='Samp2',writemode='a')
-Returns: t-value, two-tailed p-value
-"""
- if dimension == None:
- a = N.ravel(a)
- b = N.ravel(b)
- dimension = 0
- if len(a)<>len(b):
- raise ValueError, 'Unequal length arrays.'
- x1 = amean(a,dimension)
- x2 = amean(b,dimension)
- v1 = avar(a,dimension)
- v2 = avar(b,dimension)
- n = a.shape[dimension]
- df = float(n-1)
- d = (a-b).astype('d')
-
- denom = N.sqrt((n*N.add.reduce(d*d,dimension) - N.add.reduce(d,dimension)**2) /df)
- zerodivproblem = N.equal(denom,0)
- denom = N.where(zerodivproblem,1,denom) # avoid zero-division in 1st place
- t = N.add.reduce(d,dimension) / denom # N-D COMPUTATION HERE!!!!!!
- t = N.where(zerodivproblem,1.0,t) # replace NaN/wrong t-values with 1.0
- probs = abetai(0.5*df,0.5,float(df)/(df+t*t))
- if type(t) == N.ndarray:
- probs = N.reshape(probs,t.shape)
- if probs.shape == (1,):
- probs = probs[0]
-
- if printit <> 0:
- statname = 'Related samples T-test.'
- outputpairedstats(printit,writemode,
- name1,n,x1,v1,N.minimum.reduce(N.ravel(a)),
- N.maximum.reduce(N.ravel(a)),
- name2,n,x2,v2,N.minimum.reduce(N.ravel(b)),
- N.maximum.reduce(N.ravel(b)),
- statname,t,probs)
- return
- return t, probs
-
-
- def achisquare(f_obs,f_exp=None):
- """
-Calculates a one-way chi square for array of observed frequencies and returns
-the result. If no expected frequencies are given, the total N is assumed to
-be equally distributed across all groups.
-@@@NOT RIGHT??
-
-Usage: achisquare(f_obs, f_exp=None) f_obs = array of observed cell freq.
-Returns: chisquare-statistic, associated p-value
-"""
-
- k = len(f_obs)
- if f_exp == None:
- f_exp = N.array([sum(f_obs)/float(k)] * len(f_obs),N.float_)
- f_exp = f_exp.astype(N.float_)
- chisq = N.add.reduce((f_obs-f_exp)**2 / f_exp)
- return chisq, achisqprob(chisq, k-1)
-
-
- def aks_2samp (data1,data2):
- """
-Computes the Kolmogorov-Smirnof statistic on 2 samples. Modified from
-Numerical Recipies in C, page 493. Returns KS D-value, prob. Not ufunc-
-like.
-
-Usage: aks_2samp(data1,data2) where data1 and data2 are 1D arrays
-Returns: KS D-value, p-value
-"""
- j1 = 0 # N.zeros(data1.shape[1:]) TRIED TO MAKE THIS UFUNC-LIKE
- j2 = 0 # N.zeros(data2.shape[1:])
- fn1 = 0.0 # N.zeros(data1.shape[1:],N.float_)
- fn2 = 0.0 # N.zeros(data2.shape[1:],N.float_)
- n1 = data1.shape[0]
- n2 = data2.shape[0]
- en1 = n1*1
- en2 = n2*1
- d = N.zeros(data1.shape[1:],N.float_)
- data1 = N.sort(data1,0)
- data2 = N.sort(data2,0)
- while j1 < n1 and j2 < n2:
- d1=data1[j1]
- d2=data2[j2]
- if d1 <= d2:
- fn1 = (j1)/float(en1)
- j1 = j1 + 1
- if d2 <= d1:
- fn2 = (j2)/float(en2)
- j2 = j2 + 1
- dt = (fn2-fn1)
- if abs(dt) > abs(d):
- d = dt
-# try:
- en = math.sqrt(en1*en2/float(en1+en2))
- prob = aksprob((en+0.12+0.11/en)*N.fabs(d))
-# except:
-# prob = 1.0
- return d, prob
-
-
- def amannwhitneyu(x,y):
- """
-Calculates a Mann-Whitney U statistic on the provided scores and
-returns the result. Use only when the n in each condition is < 20 and
-you have 2 independent samples of ranks. REMEMBER: Mann-Whitney U is
-significant if the u-obtained is LESS THAN or equal to the critical
-value of U.
-
-Usage: amannwhitneyu(x,y) where x,y are arrays of values for 2 conditions
-Returns: u-statistic, one-tailed p-value (i.e., p(z(U)))
-"""
- n1 = len(x)
- n2 = len(y)
- ranked = rankdata(N.concatenate((x,y)))
- rankx = ranked[0:n1] # get the x-ranks
- ranky = ranked[n1:] # the rest are y-ranks
- u1 = n1*n2 + (n1*(n1+1))/2.0 - sum(rankx) # calc U for x
- u2 = n1*n2 - u1 # remainder is U for y
- bigu = max(u1,u2)
- smallu = min(u1,u2)
- T = math.sqrt(tiecorrect(ranked)) # correction factor for tied scores
- if T == 0:
- raise ValueError, 'All numbers are identical in amannwhitneyu'
- sd = math.sqrt(T*n1*n2*(n1+n2+1)/12.0)
- z = abs((bigu-n1*n2/2.0) / sd) # normal approximation for prob calc
- return smallu, 1.0 - azprob(z)
-
-
- def atiecorrect(rankvals):
- """
-Tie-corrector for ties in Mann Whitney U and Kruskal Wallis H tests.
-See Siegel, S. (1956) Nonparametric Statistics for the Behavioral
-Sciences. New York: McGraw-Hill. Code adapted from |Stat rankind.c
-code.
-
-Usage: atiecorrect(rankvals)
-Returns: T correction factor for U or H
-"""
- sorted,posn = ashellsort(N.array(rankvals))
- n = len(sorted)
- T = 0.0
- i = 0
- while (i<n-1):
- if sorted[i] == sorted[i+1]:
- nties = 1
- while (i<n-1) and (sorted[i] == sorted[i+1]):
- nties = nties +1
- i = i +1
- T = T + nties**3 - nties
- i = i+1
- T = T / float(n**3-n)
- return 1.0 - T
-
-
- def aranksums(x,y):
- """
-Calculates the rank sums statistic on the provided scores and returns
-the result.
-
-Usage: aranksums(x,y) where x,y are arrays of values for 2 conditions
-Returns: z-statistic, two-tailed p-value
-"""
- n1 = len(x)
- n2 = len(y)
- alldata = N.concatenate((x,y))
- ranked = arankdata(alldata)
- x = ranked[:n1]
- y = ranked[n1:]
- s = sum(x)
- expected = n1*(n1+n2+1) / 2.0
- z = (s - expected) / math.sqrt(n1*n2*(n1+n2+1)/12.0)
- prob = 2*(1.0 - azprob(abs(z)))
- return z, prob
-
-
- def awilcoxont(x,y):
- """
-Calculates the Wilcoxon T-test for related samples and returns the
-result. A non-parametric T-test.
-
-Usage: awilcoxont(x,y) where x,y are equal-length arrays for 2 conditions
-Returns: t-statistic, two-tailed p-value
-"""
- if len(x) <> len(y):
- raise ValueError, 'Unequal N in awilcoxont. Aborting.'
- d = x-y
- d = N.compress(N.not_equal(d,0),d) # Keep all non-zero differences
- count = len(d)
- absd = abs(d)
- absranked = arankdata(absd)
- r_plus = 0.0
- r_minus = 0.0
- for i in range(len(absd)):
- if d[i] < 0:
- r_minus = r_minus + absranked[i]
- else:
- r_plus = r_plus + absranked[i]
- wt = min(r_plus, r_minus)
- mn = count * (count+1) * 0.25
- se = math.sqrt(count*(count+1)*(2.0*count+1.0)/24.0)
- z = math.fabs(wt-mn) / se
- z = math.fabs(wt-mn) / se
- prob = 2*(1.0 -zprob(abs(z)))
- return wt, prob
-
-
- def akruskalwallish(*args):
- """
-The Kruskal-Wallis H-test is a non-parametric ANOVA for 3 or more
-groups, requiring at least 5 subjects in each group. This function
-calculates the Kruskal-Wallis H and associated p-value for 3 or more
-independent samples.
-
-Usage: akruskalwallish(*args) args are separate arrays for 3+ conditions
-Returns: H-statistic (corrected for ties), associated p-value
-"""
- assert len(args) == 3, "Need at least 3 groups in stats.akruskalwallish()"
- args = list(args)
- n = [0]*len(args)
- n = map(len,args)
- all = []
- for i in range(len(args)):
- all = all + args[i].tolist()
- ranked = rankdata(all)
- T = tiecorrect(ranked)
- for i in range(len(args)):
- args[i] = ranked[0:n[i]]
- del ranked[0:n[i]]
- rsums = []
- for i in range(len(args)):
- rsums.append(sum(args[i])**2)
- rsums[i] = rsums[i] / float(n[i])
- ssbn = sum(rsums)
- totaln = sum(n)
- h = 12.0 / (totaln*(totaln+1)) * ssbn - 3*(totaln+1)
- df = len(args) - 1
- if T == 0:
- raise ValueError, 'All numbers are identical in akruskalwallish'
- h = h / float(T)
- return h, chisqprob(h,df)
-
-
- def afriedmanchisquare(*args):
- """
-Friedman Chi-Square is a non-parametric, one-way within-subjects
-ANOVA. This function calculates the Friedman Chi-square test for
-repeated measures and returns the result, along with the associated
-probability value. It assumes 3 or more repeated measures. Only 3
-levels requires a minimum of 10 subjects in the study. Four levels
-requires 5 subjects per level(??).
-
-Usage: afriedmanchisquare(*args) args are separate arrays for 2+ conditions
-Returns: chi-square statistic, associated p-value
-"""
- k = len(args)
- if k < 3:
- raise ValueError, '\nLess than 3 levels. Friedman test not appropriate.\n'
- n = len(args[0])
- data = apply(pstat.aabut,args)
- data = data.astype(N.float_)
- for i in range(len(data)):
- data[i] = arankdata(data[i])
- ssbn = asum(asum(args,1)**2)
- chisq = 12.0 / (k*n*(k+1)) * ssbn - 3*n*(k+1)
- return chisq, achisqprob(chisq,k-1)
-
-
-#####################################
-#### APROBABILITY CALCULATIONS ####
-#####################################
-
- def achisqprob(chisq,df):
- """
-Returns the (1-tail) probability value associated with the provided chi-square
-value and df. Heavily modified from chisq.c in Gary Perlman's |Stat. Can
-handle multiple dimensions.
-
-Usage: achisqprob(chisq,df) chisq=chisquare stat., df=degrees of freedom
-"""
- BIG = 200.0
- def ex(x):
- BIG = 200.0
- exponents = N.where(N.less(x,-BIG),-BIG,x)
- return N.exp(exponents)
-
- if type(chisq) == N.ndarray:
- arrayflag = 1
- else:
- arrayflag = 0
- chisq = N.array([chisq])
- if df < 1:
- return N.ones(chisq.shape,N.float)
- probs = N.zeros(chisq.shape,N.float_)
- probs = N.where(N.less_equal(chisq,0),1.0,probs) # set prob=1 for chisq<0
- a = 0.5 * chisq
- if df > 1:
- y = ex(-a)
- if df%2 == 0:
- even = 1
- s = y*1
- s2 = s*1
- else:
- even = 0
- s = 2.0 * azprob(-N.sqrt(chisq))
- s2 = s*1
- if (df > 2):
- chisq = 0.5 * (df - 1.0)
- if even:
- z = N.ones(probs.shape,N.float_)
- else:
- z = 0.5 *N.ones(probs.shape,N.float_)
- if even:
- e = N.zeros(probs.shape,N.float_)
- else:
- e = N.log(N.sqrt(N.pi)) *N.ones(probs.shape,N.float_)
- c = N.log(a)
- mask = N.zeros(probs.shape)
- a_big = N.greater(a,BIG)
- a_big_frozen = -1 *N.ones(probs.shape,N.float_)
- totalelements = N.multiply.reduce(N.array(probs.shape))
- while asum(mask)<>totalelements:
- e = N.log(z) + e
- s = s + ex(c*z-a-e)
- z = z + 1.0
-# print z, e, s
- newmask = N.greater(z,chisq)
- a_big_frozen = N.where(newmask*N.equal(mask,0)*a_big, s, a_big_frozen)
- mask = N.clip(newmask+mask,0,1)
- if even:
- z = N.ones(probs.shape,N.float_)
- e = N.ones(probs.shape,N.float_)
- else:
- z = 0.5 *N.ones(probs.shape,N.float_)
- e = 1.0 / N.sqrt(N.pi) / N.sqrt(a) * N.ones(probs.shape,N.float_)
- c = 0.0
- mask = N.zeros(probs.shape)
- a_notbig_frozen = -1 *N.ones(probs.shape,N.float_)
- while asum(mask)<>totalelements:
- e = e * (a/z.astype(N.float_))
- c = c + e
- z = z + 1.0
-# print '#2', z, e, c, s, c*y+s2
- newmask = N.greater(z,chisq)
- a_notbig_frozen = N.where(newmask*N.equal(mask,0)*(1-a_big),
- c*y+s2, a_notbig_frozen)
- mask = N.clip(newmask+mask,0,1)
- probs = N.where(N.equal(probs,1),1,
- N.where(N.greater(a,BIG),a_big_frozen,a_notbig_frozen))
- return probs
- else:
- return s
-
-
- def aerfcc(x):
- """
-Returns the complementary error function erfc(x) with fractional error
-everywhere less than 1.2e-7. Adapted from Numerical Recipies. Can
-handle multiple dimensions.
-
-Usage: aerfcc(x)
-"""
- z = abs(x)
- t = 1.0 / (1.0+0.5*z)
- ans = t * N.exp(-z*z-1.26551223 + t*(1.00002368+t*(0.37409196+t*(0.09678418+t*(-0.18628806+t*(0.27886807+t*(-1.13520398+t*(1.48851587+t*(-0.82215223+t*0.17087277)))))))))
- return N.where(N.greater_equal(x,0), ans, 2.0-ans)
-
-
- def azprob(z):
- """
-Returns the area under the normal curve 'to the left of' the given z value.
-Thus,
- for z<0, zprob(z) = 1-tail probability
- for z>0, 1.0-zprob(z) = 1-tail probability
- for any z, 2.0*(1.0-zprob(abs(z))) = 2-tail probability
-Adapted from z.c in Gary Perlman's |Stat. Can handle multiple dimensions.
-
-Usage: azprob(z) where z is a z-value
-"""
- def yfunc(y):
- x = (((((((((((((-0.000045255659 * y
- +0.000152529290) * y -0.000019538132) * y
- -0.000676904986) * y +0.001390604284) * y
- -0.000794620820) * y -0.002034254874) * y
- +0.006549791214) * y -0.010557625006) * y
- +0.011630447319) * y -0.009279453341) * y
- +0.005353579108) * y -0.002141268741) * y
- +0.000535310849) * y +0.999936657524
- return x
-
- def wfunc(w):
- x = ((((((((0.000124818987 * w
- -0.001075204047) * w +0.005198775019) * w
- -0.019198292004) * w +0.059054035642) * w
- -0.151968751364) * w +0.319152932694) * w
- -0.531923007300) * w +0.797884560593) * N.sqrt(w) * 2.0
- return x
-
- Z_MAX = 6.0 # maximum meaningful z-value
- x = N.zeros(z.shape,N.float_) # initialize
- y = 0.5 * N.fabs(z)
- x = N.where(N.less(y,1.0),wfunc(y*y),yfunc(y-2.0)) # get x's
- x = N.where(N.greater(y,Z_MAX*0.5),1.0,x) # kill those with big Z
- prob = N.where(N.greater(z,0),(x+1)*0.5,(1-x)*0.5)
- return prob
-
-
- def aksprob(alam):
- """
-Returns the probability value for a K-S statistic computed via ks_2samp.
-Adapted from Numerical Recipies. Can handle multiple dimensions.
-
-Usage: aksprob(alam)
-"""
- if type(alam) == N.ndarray:
- frozen = -1 *N.ones(alam.shape,N.float64)
- alam = alam.astype(N.float64)
- arrayflag = 1
- else:
- frozen = N.array(-1.)
- alam = N.array(alam,N.float64)
- arrayflag = 1
- mask = N.zeros(alam.shape)
- fac = 2.0 *N.ones(alam.shape,N.float_)
- sum = N.zeros(alam.shape,N.float_)
- termbf = N.zeros(alam.shape,N.float_)
- a2 = N.array(-2.0*alam*alam,N.float64)
- totalelements = N.multiply.reduce(N.array(mask.shape))
- for j in range(1,201):
- if asum(mask) == totalelements:
- break
- exponents = (a2*j*j)
- overflowmask = N.less(exponents,-746)
- frozen = N.where(overflowmask,0,frozen)
- mask = mask+overflowmask
- term = fac*N.exp(exponents)
- sum = sum + term
- newmask = N.where(N.less_equal(abs(term),(0.001*termbf)) +
- N.less(abs(term),1.0e-8*sum), 1, 0)
- frozen = N.where(newmask*N.equal(mask,0), sum, frozen)
- mask = N.clip(mask+newmask,0,1)
- fac = -fac
- termbf = abs(term)
- if arrayflag:
- return N.where(N.equal(frozen,-1), 1.0, frozen) # 1.0 if doesn't converge
- else:
- return N.where(N.equal(frozen,-1), 1.0, frozen)[0] # 1.0 if doesn't converge
-
-
- def afprob (dfnum, dfden, F):
- """
-Returns the 1-tailed significance level (p-value) of an F statistic
-given the degrees of freedom for the numerator (dfR-dfF) and the degrees
-of freedom for the denominator (dfF). Can handle multiple dims for F.
-
-Usage: afprob(dfnum, dfden, F) where usually dfnum=dfbn, dfden=dfwn
-"""
- if type(F) == N.ndarray:
- return abetai(0.5*dfden, 0.5*dfnum, dfden/(1.0*dfden+dfnum*F))
- else:
- return abetai(0.5*dfden, 0.5*dfnum, dfden/float(dfden+dfnum*F))
-
-
- def abetacf(a,b,x,verbose=1):
- """
-Evaluates the continued fraction form of the incomplete Beta function,
-betai. (Adapted from: Numerical Recipies in C.) Can handle multiple
-dimensions for x.
-
-Usage: abetacf(a,b,x,verbose=1)
-"""
- ITMAX = 200
- EPS = 3.0e-7
-
- arrayflag = 1
- if type(x) == N.ndarray:
- frozen = N.ones(x.shape,N.float_) *-1 #start out w/ -1s, should replace all
- else:
- arrayflag = 0
- frozen = N.array([-1])
- x = N.array([x])
- mask = N.zeros(x.shape)
- bm = az = am = 1.0
- qab = a+b
- qap = a+1.0
- qam = a-1.0
- bz = 1.0-qab*x/qap
- for i in range(ITMAX+1):
- if N.sum(N.ravel(N.equal(frozen,-1)))==0:
- break
- em = float(i+1)
- tem = em + em
- d = em*(b-em)*x/((qam+tem)*(a+tem))
- ap = az + d*am
- bp = bz+d*bm
- d = -(a+em)*(qab+em)*x/((qap+tem)*(a+tem))
- app = ap+d*az
- bpp = bp+d*bz
- aold = az*1
- am = ap/bpp
- bm = bp/bpp
- az = app/bpp
- bz = 1.0
- newmask = N.less(abs(az-aold),EPS*abs(az))
- frozen = N.where(newmask*N.equal(mask,0), az, frozen)
- mask = N.clip(mask+newmask,0,1)
- noconverge = asum(N.equal(frozen,-1))
- if noconverge <> 0 and verbose:
- print 'a or b too big, or ITMAX too small in Betacf for ',noconverge,' elements'
- if arrayflag:
- return frozen
- else:
- return frozen[0]
-
-
- def agammln(xx):
- """
-Returns the gamma function of xx.
- Gamma(z) = Integral(0,infinity) of t^(z-1)exp(-t) dt.
-Adapted from: Numerical Recipies in C. Can handle multiple dims ... but
-probably doesn't normally have to.
-
-Usage: agammln(xx)
-"""
- coeff = [76.18009173, -86.50532033, 24.01409822, -1.231739516,
- 0.120858003e-2, -0.536382e-5]
- x = xx - 1.0
- tmp = x + 5.5
- tmp = tmp - (x+0.5)*N.log(tmp)
- ser = 1.0
- for j in range(len(coeff)):
- x = x + 1
- ser = ser + coeff[j]/x
- return -tmp + N.log(2.50662827465*ser)
-
-
- def abetai(a,b,x,verbose=1):
- """
-Returns the incomplete beta function:
-
- I-sub-x(a,b) = 1/B(a,b)*(Integral(0,x) of t^(a-1)(1-t)^(b-1) dt)
-
-where a,b>0 and B(a,b) = G(a)*G(b)/(G(a+b)) where G(a) is the gamma
-function of a. The continued fraction formulation is implemented
-here, using the betacf function. (Adapted from: Numerical Recipies in
-C.) Can handle multiple dimensions.
-
-Usage: abetai(a,b,x,verbose=1)
-"""
- TINY = 1e-15
- if type(a) == N.ndarray:
- if asum(N.less(x,0)+N.greater(x,1)) <> 0:
- raise ValueError, 'Bad x in abetai'
- x = N.where(N.equal(x,0),TINY,x)
- x = N.where(N.equal(x,1.0),1-TINY,x)
-
- bt = N.where(N.equal(x,0)+N.equal(x,1), 0, -1)
- exponents = ( gammln(a+b)-gammln(a)-gammln(b)+a*N.log(x)+b*
- N.log(1.0-x) )
- # 746 (below) is the MAX POSSIBLE BEFORE OVERFLOW
- exponents = N.where(N.less(exponents,-740),-740,exponents)
- bt = N.exp(exponents)
- if type(x) == N.ndarray:
- ans = N.where(N.less(x,(a+1)/(a+b+2.0)),
- bt*abetacf(a,b,x,verbose)/float(a),
- 1.0-bt*abetacf(b,a,1.0-x,verbose)/float(b))
- else:
- if x<(a+1)/(a+b+2.0):
- ans = bt*abetacf(a,b,x,verbose)/float(a)
- else:
- ans = 1.0-bt*abetacf(b,a,1.0-x,verbose)/float(b)
- return ans
-
-
-#####################################
-####### AANOVA CALCULATIONS #######
-#####################################
-
- import LinearAlgebra, operator
- LA = LinearAlgebra
-
- def aglm(data,para):
- """
-Calculates a linear model fit ... anova/ancova/lin-regress/t-test/etc. Taken
-from:
- Peterson et al. Statistical limitations in functional neuroimaging
- I. Non-inferential methods and statistical models. Phil Trans Royal Soc
- Lond B 354: 1239-1260.
-
-Usage: aglm(data,para)
-Returns: statistic, p-value ???
-"""
- if len(para) <> len(data):
- print "data and para must be same length in aglm"
- return
- n = len(para)
- p = pstat.aunique(para)
- x = N.zeros((n,len(p))) # design matrix
- for l in range(len(p)):
- x[:,l] = N.equal(para,p[l])
- b = N.dot(N.dot(LA.inv(N.dot(N.transpose(x),x)), # i.e., b=inv(X'X)X'Y
- N.transpose(x)),
- data)
- diffs = (data - N.dot(x,b))
- s_sq = 1./(n-len(p)) * N.dot(N.transpose(diffs), diffs)
-
- if len(p) == 2: # ttest_ind
- c = N.array([1,-1])
- df = n-2
- fact = asum(1.0/asum(x,0)) # i.e., 1/n1 + 1/n2 + 1/n3 ...
- t = N.dot(c,b) / N.sqrt(s_sq*fact)
- probs = abetai(0.5*df,0.5,float(df)/(df+t*t))
- return t, probs
-
-
- def aF_oneway(*args):
- """
-Performs a 1-way ANOVA, returning an F-value and probability given
-any number of groups. From Heiman, pp.394-7.
-
-Usage: aF_oneway (*args) where *args is 2 or more arrays, one per
- treatment group
-Returns: f-value, probability
-"""
- na = len(args) # ANOVA on 'na' groups, each in it's own array
- means = [0]*na
- vars = [0]*na
- ns = [0]*na
- alldata = []
- tmp = map(N.array,args)
- means = map(amean,tmp)
- vars = map(avar,tmp)
- ns = map(len,args)
- alldata = N.concatenate(args)
- bign = len(alldata)
- sstot = ass(alldata)-(asquare_of_sums(alldata)/float(bign))
- ssbn = 0
- for a in args:
- ssbn = ssbn + asquare_of_sums(N.array(a))/float(len(a))
- ssbn = ssbn - (asquare_of_sums(alldata)/float(bign))
- sswn = sstot-ssbn
- dfbn = na-1
- dfwn = bign - na
- msb = ssbn/float(dfbn)
- msw = sswn/float(dfwn)
- f = msb/msw
- prob = fprob(dfbn,dfwn,f)
- return f, prob
-
-
- def aF_value (ER,EF,dfR,dfF):
- """
-Returns an F-statistic given the following:
- ER = error associated with the null hypothesis (the Restricted model)
- EF = error associated with the alternate hypothesis (the Full model)
- dfR = degrees of freedom the Restricted model
- dfF = degrees of freedom associated with the Restricted model
-"""
- return ((ER-EF)/float(dfR-dfF) / (EF/float(dfF)))
-
-
- def outputfstats(Enum, Eden, dfnum, dfden, f, prob):
- Enum = round(Enum,3)
- Eden = round(Eden,3)
- dfnum = round(Enum,3)
- dfden = round(dfden,3)
- f = round(f,3)
- prob = round(prob,3)
- suffix = '' # for *s after the p-value
- if prob < 0.001: suffix = ' ***'
- elif prob < 0.01: suffix = ' **'
- elif prob < 0.05: suffix = ' *'
- title = [['EF/ER','DF','Mean Square','F-value','prob','']]
- lofl = title+[[Enum, dfnum, round(Enum/float(dfnum),3), f, prob, suffix],
- [Eden, dfden, round(Eden/float(dfden),3),'','','']]
- pstat.printcc(lofl)
- return
-
-
- def F_value_multivariate(ER, EF, dfnum, dfden):
- """
-Returns an F-statistic given the following:
- ER = error associated with the null hypothesis (the Restricted model)
- EF = error associated with the alternate hypothesis (the Full model)
- dfR = degrees of freedom the Restricted model
- dfF = degrees of freedom associated with the Restricted model
-where ER and EF are matrices from a multivariate F calculation.
-"""
- if type(ER) in [IntType, FloatType]:
- ER = N.array([[ER]])
- if type(EF) in [IntType, FloatType]:
- EF = N.array([[EF]])
- n_um = (LA.det(ER) - LA.det(EF)) / float(dfnum)
- d_en = LA.det(EF) / float(dfden)
- return n_um / d_en
-
-
-#####################################
-####### ASUPPORT FUNCTIONS ########
-#####################################
-
- def asign(a):
- """
-Usage: asign(a)
-Returns: array shape of a, with -1 where a<0 and +1 where a>=0
-"""
- a = N.asarray(a)
- if ((type(a) == type(1.4)) or (type(a) == type(1))):
- return a-a-N.less(a,0)+N.greater(a,0)
- else:
- return N.zeros(N.shape(a))-N.less(a,0)+N.greater(a,0)
-
-
- def asum (a, dimension=None,keepdims=0):
- """
-An alternative to the Numeric.add.reduce function, which allows one to
-(1) collapse over multiple dimensions at once, and/or (2) to retain
-all dimensions in the original array (squashing one down to size.
-Dimension can equal None (ravel array first), an integer (the
-dimension over which to operate), or a sequence (operate over multiple
-dimensions). If keepdims=1, the resulting array will have as many
-dimensions as the input array.
-
-Usage: asum(a, dimension=None, keepdims=0)
-Returns: array summed along 'dimension'(s), same _number_ of dims if keepdims=1
-"""
- if type(a) == N.ndarray and a.dtype in [N.int_, N.short, N.ubyte]:
- a = a.astype(N.float_)
- if dimension == None:
- s = N.sum(N.ravel(a))
- elif type(dimension) in [IntType,FloatType]:
- s = N.add.reduce(a, dimension)
- if keepdims == 1:
- shp = list(a.shape)
- shp[dimension] = 1
- s = N.reshape(s,shp)
- else: # must be a SEQUENCE of dims to sum over
- dims = list(dimension)
- dims.sort()
- dims.reverse()
- s = a *1.0
- for dim in dims:
- s = N.add.reduce(s,dim)
- if keepdims == 1:
- shp = list(a.shape)
- for dim in dims:
- shp[dim] = 1
- s = N.reshape(s,shp)
- return s
-
-
- def acumsum (a,dimension=None):
- """
-Returns an array consisting of the cumulative sum of the items in the
-passed array. Dimension can equal None (ravel array first), an
-integer (the dimension over which to operate), or a sequence (operate
-over multiple dimensions, but this last one just barely makes sense).
-
-Usage: acumsum(a,dimension=None)
-"""
- if dimension == None:
- a = N.ravel(a)
- dimension = 0
- if type(dimension) in [ListType, TupleType, N.ndarray]:
- dimension = list(dimension)
- dimension.sort()
- dimension.reverse()
- for d in dimension:
- a = N.add.accumulate(a,d)
- return a
- else:
- return N.add.accumulate(a,dimension)
-
-
- def ass(inarray, dimension=None, keepdims=0):
- """
-Squares each value in the passed array, adds these squares & returns
-the result. Unfortunate function name. :-) Defaults to ALL values in
-the array. Dimension can equal None (ravel array first), an integer
-(the dimension over which to operate), or a sequence (operate over
-multiple dimensions). Set keepdims=1 to maintain the original number
-of dimensions.
-
-Usage: ass(inarray, dimension=None, keepdims=0)
-Returns: sum-along-'dimension' for (inarray*inarray)
-"""
- if dimension == None:
- inarray = N.ravel(inarray)
- dimension = 0
- return asum(inarray*inarray,dimension,keepdims)
-
-
- def asummult (array1,array2,dimension=None,keepdims=0):
- """
-Multiplies elements in array1 and array2, element by element, and
-returns the sum (along 'dimension') of all resulting multiplications.
-Dimension can equal None (ravel array first), an integer (the
-dimension over which to operate), or a sequence (operate over multiple
-dimensions). A trivial function, but included for completeness.
-
-Usage: asummult(array1,array2,dimension=None,keepdims=0)
-"""
- if dimension == None:
- array1 = N.ravel(array1)
- array2 = N.ravel(array2)
- dimension = 0
- return asum(array1*array2,dimension,keepdims)
-
-
- def asquare_of_sums(inarray, dimension=None, keepdims=0):
- """
-Adds the values in the passed array, squares that sum, and returns the
-result. Dimension can equal None (ravel array first), an integer (the
-dimension over which to operate), or a sequence (operate over multiple
-dimensions). If keepdims=1, the returned array will have the same
-NUMBER of dimensions as the original.
-
-Usage: asquare_of_sums(inarray, dimension=None, keepdims=0)
-Returns: the square of the sum over dim(s) in dimension
-"""
- if dimension == None:
- inarray = N.ravel(inarray)
- dimension = 0
- s = asum(inarray,dimension,keepdims)
- if type(s) == N.ndarray:
- return s.astype(N.float_)*s
- else:
- return float(s)*s
-
-
- def asumdiffsquared(a,b, dimension=None, keepdims=0):
- """
-Takes pairwise differences of the values in arrays a and b, squares
-these differences, and returns the sum of these squares. Dimension
-can equal None (ravel array first), an integer (the dimension over
-which to operate), or a sequence (operate over multiple dimensions).
-keepdims=1 means the return shape = len(a.shape) = len(b.shape)
-
-Usage: asumdiffsquared(a,b)
-Returns: sum[ravel(a-b)**2]
-"""
- if dimension == None:
- inarray = N.ravel(a)
- dimension = 0
- return asum((a-b)**2,dimension,keepdims)
-
-
- def ashellsort(inarray):
- """
-Shellsort algorithm. Sorts a 1D-array.
-
-Usage: ashellsort(inarray)
-Returns: sorted-inarray, sorting-index-vector (for original array)
-"""
- n = len(inarray)
- svec = inarray *1.0
- ivec = range(n)
- gap = n/2 # integer division needed
- while gap >0:
- for i in range(gap,n):
- for j in range(i-gap,-1,-gap):
- while j>=0 and svec[j]>svec[j+gap]:
- temp = svec[j]
- svec[j] = svec[j+gap]
- svec[j+gap] = temp
- itemp = ivec[j]
- ivec[j] = ivec[j+gap]
- ivec[j+gap] = itemp
- gap = gap / 2 # integer division needed
-# svec is now sorted input vector, ivec has the order svec[i] = vec[ivec[i]]
- return svec, ivec
-
-
- def arankdata(inarray):
- """
-Ranks the data in inarray, dealing with ties appropritely. Assumes
-a 1D inarray. Adapted from Gary Perlman's |Stat ranksort.
-
-Usage: arankdata(inarray)
-Returns: array of length equal to inarray, containing rank scores
-"""
- n = len(inarray)
- svec, ivec = ashellsort(inarray)
- sumranks = 0
- dupcount = 0
- newarray = N.zeros(n,N.float_)
- for i in range(n):
- sumranks = sumranks + i
- dupcount = dupcount + 1
- if i==n-1 or svec[i] <> svec[i+1]:
- averank = sumranks / float(dupcount) + 1
- for j in range(i-dupcount+1,i+1):
- newarray[ivec[j]] = averank
- sumranks = 0
- dupcount = 0
- return newarray
-
-
- def afindwithin(data):
- """
-Returns a binary vector, 1=within-subject factor, 0=between. Input
-equals the entire data array (i.e., column 1=random factor, last
-column = measured values.
-
-Usage: afindwithin(data) data in |Stat format
-"""
- numfact = len(data[0])-2
- withinvec = [0]*numfact
- for col in range(1,numfact+1):
- rows = pstat.linexand(data,col,pstat.unique(pstat.colex(data,1))[0]) # get 1 level of this factor
- if len(pstat.unique(pstat.colex(rows,0))) < len(rows): # if fewer subjects than scores on this factor
- withinvec[col-1] = 1
- return withinvec
-
-
- #########################################################
- #########################################################
- ###### RE-DEFINE DISPATCHES TO INCLUDE ARRAYS #########
- #########################################################
- #########################################################
-
-## CENTRAL TENDENCY:
- geometricmean = Dispatch ( (lgeometricmean, (ListType, TupleType)),
- (ageometricmean, (N.ndarray,)) )
- harmonicmean = Dispatch ( (lharmonicmean, (ListType, TupleType)),
- (aharmonicmean, (N.ndarray,)) )
- mean = Dispatch ( (lmean, (ListType, TupleType)),
- (amean, (N.ndarray,)) )
- median = Dispatch ( (lmedian, (ListType, TupleType)),
- (amedian, (N.ndarray,)) )
- medianscore = Dispatch ( (lmedianscore, (ListType, TupleType)),
- (amedianscore, (N.ndarray,)) )
- mode = Dispatch ( (lmode, (ListType, TupleType)),
- (amode, (N.ndarray,)) )
- tmean = Dispatch ( (atmean, (N.ndarray,)) )
- tvar = Dispatch ( (atvar, (N.ndarray,)) )
- tstdev = Dispatch ( (atstdev, (N.ndarray,)) )
- tsem = Dispatch ( (atsem, (N.ndarray,)) )
-
-## VARIATION:
- moment = Dispatch ( (lmoment, (ListType, TupleType)),
- (amoment, (N.ndarray,)) )
- variation = Dispatch ( (lvariation, (ListType, TupleType)),
- (avariation, (N.ndarray,)) )
- skew = Dispatch ( (lskew, (ListType, TupleType)),
- (askew, (N.ndarray,)) )
- kurtosis = Dispatch ( (lkurtosis, (ListType, TupleType)),
- (akurtosis, (N.ndarray,)) )
- describe = Dispatch ( (ldescribe, (ListType, TupleType)),
- (adescribe, (N.ndarray,)) )
-
-## DISTRIBUTION TESTS
-
- skewtest = Dispatch ( (askewtest, (ListType, TupleType)),
- (askewtest, (N.ndarray,)) )
- kurtosistest = Dispatch ( (akurtosistest, (ListType, TupleType)),
- (akurtosistest, (N.ndarray,)) )
- normaltest = Dispatch ( (anormaltest, (ListType, TupleType)),
- (anormaltest, (N.ndarray,)) )
-
-## FREQUENCY STATS:
- itemfreq = Dispatch ( (litemfreq, (ListType, TupleType)),
- (aitemfreq, (N.ndarray,)) )
- scoreatpercentile = Dispatch ( (lscoreatpercentile, (ListType, TupleType)),
- (ascoreatpercentile, (N.ndarray,)) )
- percentileofscore = Dispatch ( (lpercentileofscore, (ListType, TupleType)),
- (apercentileofscore, (N.ndarray,)) )
- histogram = Dispatch ( (lhistogram, (ListType, TupleType)),
- (ahistogram, (N.ndarray,)) )
- cumfreq = Dispatch ( (lcumfreq, (ListType, TupleType)),
- (acumfreq, (N.ndarray,)) )
- relfreq = Dispatch ( (lrelfreq, (ListType, TupleType)),
- (arelfreq, (N.ndarray,)) )
-
-## VARIABILITY:
- obrientransform = Dispatch ( (lobrientransform, (ListType, TupleType)),
- (aobrientransform, (N.ndarray,)) )
- samplevar = Dispatch ( (lsamplevar, (ListType, TupleType)),
- (asamplevar, (N.ndarray,)) )
- samplestdev = Dispatch ( (lsamplestdev, (ListType, TupleType)),
- (asamplestdev, (N.ndarray,)) )
- signaltonoise = Dispatch( (asignaltonoise, (N.ndarray,)),)
- var = Dispatch ( (lvar, (ListType, TupleType)),
- (avar, (N.ndarray,)) )
- stdev = Dispatch ( (lstdev, (ListType, TupleType)),
- (astdev, (N.ndarray,)) )
- sterr = Dispatch ( (lsterr, (ListType, TupleType)),
- (asterr, (N.ndarray,)) )
- sem = Dispatch ( (lsem, (ListType, TupleType)),
- (asem, (N.ndarray,)) )
- z = Dispatch ( (lz, (ListType, TupleType)),
- (az, (N.ndarray,)) )
- zs = Dispatch ( (lzs, (ListType, TupleType)),
- (azs, (N.ndarray,)) )
-
-## TRIMMING FCNS:
- threshold = Dispatch( (athreshold, (N.ndarray,)),)
- trimboth = Dispatch ( (ltrimboth, (ListType, TupleType)),
- (atrimboth, (N.ndarray,)) )
- trim1 = Dispatch ( (ltrim1, (ListType, TupleType)),
- (atrim1, (N.ndarray,)) )
-
-## CORRELATION FCNS:
- paired = Dispatch ( (lpaired, (ListType, TupleType)),
- (apaired, (N.ndarray,)) )
- lincc = Dispatch ( (llincc, (ListType, TupleType)),
- (alincc, (N.ndarray,)) )
- pearsonr = Dispatch ( (lpearsonr, (ListType, TupleType)),
- (apearsonr, (N.ndarray,)) )
- spearmanr = Dispatch ( (lspearmanr, (ListType, TupleType)),
- (aspearmanr, (N.ndarray,)) )
- pointbiserialr = Dispatch ( (lpointbiserialr, (ListType, TupleType)),
- (apointbiserialr, (N.ndarray,)) )
- kendalltau = Dispatch ( (lkendalltau, (ListType, TupleType)),
- (akendalltau, (N.ndarray,)) )
- linregress = Dispatch ( (llinregress, (ListType, TupleType)),
- (alinregress, (N.ndarray,)) )
-
-## INFERENTIAL STATS:
- ttest_1samp = Dispatch ( (lttest_1samp, (ListType, TupleType)),
- (attest_1samp, (N.ndarray,)) )
- ttest_ind = Dispatch ( (lttest_ind, (ListType, TupleType)),
- (attest_ind, (N.ndarray,)) )
- ttest_rel = Dispatch ( (lttest_rel, (ListType, TupleType)),
- (attest_rel, (N.ndarray,)) )
- chisquare = Dispatch ( (lchisquare, (ListType, TupleType)),
- (achisquare, (N.ndarray,)) )
- ks_2samp = Dispatch ( (lks_2samp, (ListType, TupleType)),
- (aks_2samp, (N.ndarray,)) )
- mannwhitneyu = Dispatch ( (lmannwhitneyu, (ListType, TupleType)),
- (amannwhitneyu, (N.ndarray,)) )
- tiecorrect = Dispatch ( (ltiecorrect, (ListType, TupleType)),
- (atiecorrect, (N.ndarray,)) )
- ranksums = Dispatch ( (lranksums, (ListType, TupleType)),
- (aranksums, (N.ndarray,)) )
- wilcoxont = Dispatch ( (lwilcoxont, (ListType, TupleType)),
- (awilcoxont, (N.ndarray,)) )
- kruskalwallish = Dispatch ( (lkruskalwallish, (ListType, TupleType)),
- (akruskalwallish, (N.ndarray,)) )
- friedmanchisquare = Dispatch ( (lfriedmanchisquare, (ListType, TupleType)),
- (afriedmanchisquare, (N.ndarray,)) )
-
-## PROBABILITY CALCS:
- chisqprob = Dispatch ( (lchisqprob, (IntType, FloatType)),
- (achisqprob, (N.ndarray,)) )
- zprob = Dispatch ( (lzprob, (IntType, FloatType)),
- (azprob, (N.ndarray,)) )
- ksprob = Dispatch ( (lksprob, (IntType, FloatType)),
- (aksprob, (N.ndarray,)) )
- fprob = Dispatch ( (lfprob, (IntType, FloatType)),
- (afprob, (N.ndarray,)) )
- betacf = Dispatch ( (lbetacf, (IntType, FloatType)),
- (abetacf, (N.ndarray,)) )
- betai = Dispatch ( (lbetai, (IntType, FloatType)),
- (abetai, (N.ndarray,)) )
- erfcc = Dispatch ( (lerfcc, (IntType, FloatType)),
- (aerfcc, (N.ndarray,)) )
- gammln = Dispatch ( (lgammln, (IntType, FloatType)),
- (agammln, (N.ndarray,)) )
-
-## ANOVA FUNCTIONS:
- F_oneway = Dispatch ( (lF_oneway, (ListType, TupleType)),
- (aF_oneway, (N.ndarray,)) )
- F_value = Dispatch ( (lF_value, (ListType, TupleType)),
- (aF_value, (N.ndarray,)) )
-
-## SUPPORT FUNCTIONS:
- incr = Dispatch ( (lincr, (ListType, TupleType, N.ndarray)), )
- sum = Dispatch ( (lsum, (ListType, TupleType)),
- (asum, (N.ndarray,)) )
- cumsum = Dispatch ( (lcumsum, (ListType, TupleType)),
- (acumsum, (N.ndarray,)) )
- ss = Dispatch ( (lss, (ListType, TupleType)),
- (ass, (N.ndarray,)) )
- summult = Dispatch ( (lsummult, (ListType, TupleType)),
- (asummult, (N.ndarray,)) )
- square_of_sums = Dispatch ( (lsquare_of_sums, (ListType, TupleType)),
- (asquare_of_sums, (N.ndarray,)) )
- sumdiffsquared = Dispatch ( (lsumdiffsquared, (ListType, TupleType)),
- (asumdiffsquared, (N.ndarray,)) )
- shellsort = Dispatch ( (lshellsort, (ListType, TupleType)),
- (ashellsort, (N.ndarray,)) )
- rankdata = Dispatch ( (lrankdata, (ListType, TupleType)),
- (arankdata, (N.ndarray,)) )
- findwithin = Dispatch ( (lfindwithin, (ListType, TupleType)),
- (afindwithin, (N.ndarray,)) )
-
-###################### END OF NUMERIC FUNCTION BLOCK #####################
-
-###################### END OF STATISTICAL FUNCTIONS ######################
-
-except ImportError:
- pass
Removed: zorg/trunk/lnt/lnt/formats/AppleOpenSSLReader.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/formats/AppleOpenSSLReader.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/formats/AppleOpenSSLReader.py (original)
+++ zorg/trunk/lnt/lnt/formats/AppleOpenSSLReader.py (removed)
@@ -1,111 +0,0 @@
-"""
-Converter for a custom format with the output of OpenSSL test runs.
-"""
-
-import os
-
-def parseOpenSSLFile(path):
- data = open(path).read()
- lines = list(open(path))
- lnfields = [ln.strip().split(':') for ln in lines]
- assert(lnfields[0][0] == '+H')
- header = lnfields[0]
- blockSizes = map(int, header[1:])
-
- # Cipher -> [(Block Size,Value)*]
- data = {}
- for fields in lnfields[1:]:
- # Ignore other fields
- if fields[0] != '+F':
- continue
-
- name = fields[2]
- countsPerBlock = fields[3:]
- assert len(countsPerBlock) == len(blockSizes)
- data[name] = [(b,float(c))
- for b,c in zip(blockSizes,countsPerBlock)]
-
- return data
-
-def _matches_format(path_or_file):
- # If this is a file, we definitely can't load it.
- if not isinstance(path_or_file,str):
- return False
-
- # Assume an input matches this format if any of the key files exists.
- return (os.path.exists(os.path.join(path_or_file, 'svn-revision')) or
- os.path.exists(os.path.join(path_or_file, 'start.timestamp')) or
- os.path.exists(os.path.join(path_or_file, 'finished.timestamp')))
-
-def _load_data(path):
- # Look for svn-revision and timestamps.
-
- llvmRevision = ''
- startTime = endTime = ''
-
- f = os.path.join(path, 'svn-revision')
- if os.path.exists(f):
- svnRevisionData = open(f).read()
- assert(svnRevisionData[0] == 'r')
- llvmRevision = int(svnRevisionData[1:])
-
- f = os.path.join(path, 'start.timestamp')
- if os.path.exists(f):
- startTime = open(f).read().strip()
-
- f = os.path.join(path, 'finished.timestamp')
- if os.path.exists(f):
- endTime = open(f).read().strip()
-
- # Look for sub directories
- openSSLData = []
- for file in os.listdir(path):
- p = os.path.join(path, file)
- if os.path.isdir(p):
- # Look for Tests/Apple.OpenSSL.64/speed.txt
- p = os.path.join(p, 'Tests/Apple.OpenSSL.64/speed.txt')
- if os.path.exists(p):
- openSSLData.append((file, parseOpenSSLFile(p)))
-
- basename = 'apple_openssl'
-
- machine = { 'Name' : 'dgohman.apple.com',
- 'Info' : { } }
-
- run = { 'Start Time' : startTime,
- 'End Time' : endTime,
- 'Info' : { 'llvm-revision' : llvmRevision,
- 'tag' : 'apple_openssl' } }
-
- tests = []
- groupInfo = []
-
- for dirName,dirData in openSSLData:
- # Demangle compiler & flags
- if dirName.startswith('gcc'):
- compiler = 'gcc'
- elif dirName.startswith('llvm-gcc'):
- compiler = 'llvm-gcc'
- else:
- raise ValueError,compiler
- assert dirName[len(compiler)] == '-'
- flags = dirName[len(compiler)+1:]
-
- for cipher,values in dirData.items():
- testName = basename + '.' + cipher + '.ips'
- for block,value in values:
- parameters = { 'blockSize' : block,
- 'compiler' : compiler,
- 'compiler_flags' : flags }
- tests.append( { 'Name' : testName,
- 'Info' : parameters,
- 'Data' : [value] } )
-
- return { 'Machine' : machine,
- 'Run' : run,
- 'Tests' : tests,
- 'Group Info' : groupInfo }
-
-format = { 'name' : 'apple_openssl',
- 'predicate' : _matches_format,
- 'read' : _load_data }
Removed: zorg/trunk/lnt/lnt/formats/JSONFormat.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/formats/JSONFormat.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/formats/JSONFormat.py (original)
+++ zorg/trunk/lnt/lnt/formats/JSONFormat.py (removed)
@@ -1,22 +0,0 @@
-from lnt.util import json
-
-def _matches_format(path_or_file):
- if isinstance(path_or_file, str):
- path_or_file = open(path_or_file)
-
- try:
- json.load(path_or_file)
- return True
- except:
- return False
-
-def _load_format(path_or_file):
- if isinstance(path_or_file, str):
- path_or_file = open(path_or_file)
-
- return json.load(path_or_file)
-
-format = { 'name' : 'json',
- 'predicate' : _matches_format,
- 'read' : _load_format,
- 'write' : json.dump }
Removed: zorg/trunk/lnt/lnt/formats/NightlytestReader.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/formats/NightlytestReader.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/formats/NightlytestReader.py (original)
+++ zorg/trunk/lnt/lnt/formats/NightlytestReader.py (removed)
@@ -1,233 +0,0 @@
-"""
-Data converter from the llvm/utils/NewNightlyTest.pl report file format
-(*-sentdata.txt) to the LNT plist format.
-"""
-
-import re
-
-kDataKeyStart = re.compile('(.*) =>(.*)')
-
-def _matches_format(path_or_file):
- if isinstance(path_or_file, str):
- path_or_file = open(path_or_file)
-
- # Assume this is in nightlytes format if the first line matches the
- # key-value format.
- for ln in path_or_file:
- m = kDataKeyStart.match(ln)
- if m:
- return True
- return False
-
-
-def _load_data(path_or_file):
- def parseDGResults(text):
- results = {}
- if 'Dejagnu skipped by user choice' in text:
- return results
- for ln in text.strip().split('\n'):
- result,value = ln.split(':',1)
- results[result] = results.get(result,[])
- results[result].append(value)
- return results
-
- if isinstance(path_or_file, str):
- path_or_file = open(path_or_file)
-
- basename = 'nightlytest'
-
- # Guess the format (server side or client side) based on the first
- # character.
- f = path_or_file
- isServerSide = (f.read(1) == '\'')
- f.seek(0)
-
- data = {}
-
- current = None
- inData = False
- for ln in f:
- if inData:
- if ln == 'EOD\n':
- inData = False
- else:
- data[current] += ln
- continue
-
- m = kDataKeyStart.match(ln)
- if m:
- current,value = m.groups()
- if isServerSide:
- assert current[0] == current[-1] == "'"
- current = current[1:-1]
- assert value[0] == value[1] == ' '
- value = value[2:]
- if value == '<<EOD':
- value = ''
- inData = True
- else:
- assert value[0] == value[-2] == '"'
- assert value[-1] == ','
- value = value[1:-2]
- data[current] = value
- elif isServerSide:
- assert ln == ',\n'
- else:
- assert current is not None
- data[current] += ln
-
- # Things we are ignoring for now
- data.pop('a_file_sizes')
- data.pop('all_tests')
- data.pop('build_data')
- data.pop('cvs_dir_count')
- data.pop('cvs_file_count')
- data.pop('cvsaddedfiles')
- data.pop('cvsmodifiedfiles')
- data.pop('cvsremovedfiles')
- data.pop('cvsusercommitlist')
- data.pop('cvsuserupdatelist')
- data.pop('dejagnutests_log')
- data.pop('expfail_tests')
- data.pop('lines_of_code')
- data.pop('llcbeta_options')
- data.pop('new_tests')
- data.pop('o_file_sizes')
- data.pop('passing_tests')
- data.pop('removed_tests')
- data.pop('target_triple')
- data.pop('unexpfail_tests')
- data.pop('warnings')
- data.pop('warnings_added')
- data.pop('warnings_removed')
-
- starttime = data.pop('starttime').strip()
- endtime = data.pop('endtime').strip()
-
- nickname = data.pop('nickname').strip()
- machine_data = data.pop('machine_data').strip()
- buildstatus = data.pop('buildstatus').strip()
- configtime_user = data.pop('configtime_cpu')
- configtime_wall = data.pop('configtime_wall')
- checkouttime_user = data.pop('cvscheckouttime_cpu')
- checkouttime_wall = data.pop('cvscheckouttime_wall')
- dgtime_user = data.pop('dejagnutime_cpu')
- dgtime_wall = data.pop('dejagnutime_wall')
- buildtime_wall = float(data.pop('buildtime_wall').strip())
- buildtime_user = float(data.pop('buildtime_cpu').strip())
- gcc_version = data.pop('gcc_version')
- dejagnutests_results = data.pop('dejagnutests_results')
- multisource = data.pop('multisource_programstable')
- singlesource = data.pop('singlesource_programstable')
- externals = data.pop('externalsource_programstable')
-
- assert not data.keys()
-
- machine = { 'Name' : nickname,
- 'Info' : { 'gcc_version' : gcc_version } }
- for ln in machine_data.split('\n'):
- ln = ln.strip()
- if not ln:
- continue
- assert ':' in ln
- key,value = ln.split(':',1)
- machine['Info'][key] = value
-
- # We definitely don't want these in the machine data.
- if 'time' in machine['Info']:
- machine['Info'].pop('time')
- if 'date' in machine['Info']:
- machine['Info'].pop('date')
-
- run = { 'Start Time' : starttime,
- 'End Time' : endtime,
- 'Info' : { 'tag' : 'nightlytest' } }
-
- tests = []
-
- # llvm-test doesn't provide this
- infoData = {}
-
- # Summary test information
- tests.append( { 'Name' : basename + '.Summary.configtime.wall',
- 'Info' : infoData,
- 'Data' : [configtime_wall] } )
- tests.append( { 'Name' : basename + '.Summary.configtime.user',
- 'Info' : infoData,
- 'Data' : [configtime_user] } )
- tests.append( { 'Name' : basename + '.Summary.checkouttime.wall',
- 'Info' : infoData,
- 'Data' : [checkouttime_wall] } )
- tests.append( { 'Name' : basename + '.Summary.checkouttime.user',
- 'Info' : infoData,
- 'Data' : [checkouttime_user] } )
- tests.append( { 'Name' : basename + '.Summary.buildtime.wall',
- 'Info' : infoData,
- 'Data' : [buildtime_wall] } )
- tests.append( { 'Name' : basename + '.Summary.buildtime.user',
- 'Info' : infoData,
- 'Data' : [buildtime_user] } )
- tests.append( { 'Name' : basename + '.Summary.dgtime.wall',
- 'Info' : infoData,
- 'Data' : [dgtime_wall] } )
- tests.append( { 'Name' : basename + '.Summary.dgtime.user',
- 'Info' : infoData,
- 'Data' : [dgtime_user] } )
- tests.append( { 'Name' : basename + '.Summary.buildstatus',
- 'Info' : infoData,
- 'Data' : [buildstatus == 'OK'] } )
-
- # DejaGNU Info
- results = parseDGResults(dejagnutests_results)
- for name in ('PASS', 'FAIL', 'XPASS', 'XFAIL'):
- tests.append( { 'Name' : basename + '.DejaGNU.' + name,
- 'Info' : infoData,
- 'Data' : [len(results.get(name,[]))] } )
-
- # llvm-test results
- for groupname,data in (('SingleSource', singlesource),
- ('MultiSource', multisource),
- ('Externals', externals)):
- lines = data.split('\n')
- header = lines[0].strip().split(',')
- for ln in lines[1:]:
- ln = ln.strip()
- if not ln:
- continue
- entry = dict([(k,v.strip())
- for k,v in zip(header, ln.split(','))])
- testname = basename + '.%s/%s' % (groupname,
- entry['Program'].replace('.','_'))
-
- for name,key,tname in (('gcc.compile', 'GCCAS', 'time'),
- ('bc.compile', 'Bytecode', 'size'),
- ('llc.compile', 'LLC compile', 'time'),
- ('llc-beta.compile', 'LLC-BETA compile', 'time'),
- ('jit.compile', 'JIT codegen', 'time'),
- ('gcc.exec', 'GCC', 'time'),
- ('cbe.exec', 'CBE', 'time'),
- ('llc.exec', 'LLC', 'time'),
- ('llc-beta.exec', 'LLC-BETA', 'time'),
- ('jit.exec', 'JIT', 'time'),
- ):
- time = entry[key]
- if time == '*':
- tests.append( { 'Name' : testname + '.%s.success' % name,
- 'Info' : infoData,
- 'Data' : [0] } )
- else:
- tests.append( { 'Name' : testname + '.%s.success' % name,
- 'Info' : infoData,
- 'Data' : [1] } )
- tests.append( { 'Name' : testname + '.%s.%s' % (name, tname),
- 'Info' : infoData,
- 'Data' : [float(time)] } )
- pass
-
- return { 'Machine' : machine,
- 'Run' : run,
- 'Tests' : tests }
-
-format = { 'name' : 'nightlytest',
- 'predicate' : _matches_format,
- 'read' : _load_data }
Removed: zorg/trunk/lnt/lnt/formats/PlistFormat.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/formats/PlistFormat.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/formats/PlistFormat.py (original)
+++ zorg/trunk/lnt/lnt/formats/PlistFormat.py (removed)
@@ -1,13 +0,0 @@
-import plistlib
-
-def _matches_format(path_or_file):
- try:
- plistlib.readPlist(path_or_file)
- return True
- except:
- return False
-
-format = { 'name' : 'plist',
- 'predicate' : _matches_format,
- 'read' : plistlib.readPlist,
- 'write' : plistlib.writePlist }
Removed: zorg/trunk/lnt/lnt/formats/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/formats/__init__.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/formats/__init__.py (original)
+++ zorg/trunk/lnt/lnt/formats/__init__.py (removed)
@@ -1,85 +0,0 @@
-"""
-Utilities for converting to LNT's test format.
-
-LNT formats are described by dictionaries with 'name', 'read', and 'write'
-fields. Only the 'name' field is required. The 'read' field should be a callable
-taking a path_or_file object, the 'write' function should be a callable taking a
-Python object to write, and the path_or_file to write to.
-"""
-
-from AppleOpenSSLReader import format as apple_openssl
-from NightlytestReader import format as nightlytest
-from PlistFormat import format as plist
-from JSONFormat import format as json
-
-# FIXME: Lazy loading would be nice.
-formats = [plist, json, nightlytest, apple_openssl]
-formats_by_name = dict((f['name'], f) for f in formats)
-format_names = formats_by_name.keys()
-
-def get_format(name):
- """get_format(name) -> [format]
-
- Loookup a format object by name.
- """
-
- return formats_by_name.get(name)
-
-def guess_format(path_or_file):
- """guess_format(path_or_file) -> [format]
-
- Guess which format should be used to load the given file and return it, if
- found.
- """
-
- # Check that files are seekable.
- is_file = False
- if not isinstance(path_or_file, str):
- is_file = True
- path_or_file.seek(0)
-
- matches = None
- for f in formats:
- # Check if the path matches this format, ignoring exceptions.
- try:
- try:
- if not f['predicate'](path_or_file):
- continue
- except:
- continue
- finally:
- if is_file:
- # Reset seek.
- path_or_file.seek(0)
-
- # Reject anything which matches multiple formats.
- if matches:
- return None
-
- matches = f
-
- return matches
-
-def read_any(path_or_file, format_name):
- """read_any(path_or_file, format_name) -> [format]
-
- Attempt to read any compatible LNT test format file. The format_name can be
- an actual format name, or "<auto>".
- """
- # Figure out the input format.
- if format_name == '<auto>':
- f = guess_format(path_or_file)
- if f is None:
- if isinstance(path_or_file, str):
- raise SystemExit("unable to guess input format for %r" % (
- path_or_file,))
- else:
- raise SystemExit("unable to guess input format for file")
- else:
- f = get_format(format_name)
- if f is None or not f.get('read'):
- raise SystemExit("unknown input format: %r" % inFormat)
-
- return f['read'](path_or_file)
-
-__all__ = ['get_format', 'guess_format', 'read_any'] + format_names
Removed: zorg/trunk/lnt/lnt/lnttool/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/lnttool/__init__.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/lnttool/__init__.py (original)
+++ zorg/trunk/lnt/lnt/lnttool/__init__.py (removed)
@@ -1 +0,0 @@
-from main import main
Removed: zorg/trunk/lnt/lnt/lnttool/convert.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/lnttool/convert.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/lnttool/convert.py (original)
+++ zorg/trunk/lnt/lnt/lnttool/convert.py (removed)
@@ -1,62 +0,0 @@
-import os
-import sys
-
-def convert_data(input, output, inFormat, outFormat):
- from lnt import formats
-
- out = formats.get_format(outFormat)
- if out is None or not out.get('write'):
- raise SystemExit("unknown output format: %r" % outFormat)
-
- data = formats.read_any(input, inFormat)
-
- out['write'](data, output)
- output.flush()
-
-def action_convert(name, args):
- """convert between input formats"""
-
- from optparse import OptionParser, OptionGroup
- from lnt import formats
- parser = OptionParser("%%prog %s [options] [<input>, [<output>]]" % name)
- parser.add_option("", "--from", dest="inputFormat", metavar="NAME",
- help="input format name [%default]", default='<auto>',
- choices=formats.format_names + ['<auto>'])
- parser.add_option("", "--to", dest="outputFormat", metavar="NAME",
- help="output format name [%default]", default='plist',
- choices=formats.format_names + ['<auto>'])
- (opts, args) = parser.parse_args(args)
-
- input = output = '-'
- if len(args) == 0:
- pass
- elif len(args) == 1:
- input, = args
- elif len(args) == 2:
- input,output = args
- else:
- parser.error("invalid number of arguments")
-
- if input == '-':
- # Guarantee that we can seek.
- import StringIO
- data = sys.stdin.read()
- inf = StringIO.StringIO(data)
- else:
- inf = input
-
- if output == '-':
- outf = sys.stdout
- else:
- outf = open(output, 'wb')
-
- try:
- try:
- convert_data(inf, outf, opts.inputFormat, opts.outputFormat)
- finally:
- if outf != sys.stdout:
- outf.close()
- except:
- if outf != sys.stdout:
- os.remove(output)
- raise
Removed: zorg/trunk/lnt/lnt/lnttool/create.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/lnttool/create.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/lnttool/create.py (original)
+++ zorg/trunk/lnt/lnt/lnttool/create.py (removed)
@@ -1,169 +0,0 @@
-import os
-import platform
-import sys
-
-###
-
-kConfigVersion = (0,1,0)
-kConfigTemplate = """\
-# LNT (aka Zorg) configuration file
-#
-# Paths are resolved relative to this file.
-
-# The configuration file version.
-config_version = %(cfg_version)r
-
-# Name to use for this installation. This appears in web page headers, for
-# example.
-name = %(name)r
-
-# Path to the LNT server. This is required for use in emails where we need to
-# provide an absolute URL to the server.
-zorgURL = %(hosturl)r
-
-# Temporary directory, for use by the web app. This must be writable by the user
-# the web app runs as.
-tmp_dir = %(tmp_dir)r
-
-# Database directory, for easily rerooting the entire set of databases. Database
-# paths are resolved relative to the config path + this path.
-db_dir = %(db_dir)r
-
-# The list of available databases, and their properties. At a minimum, there
-# should be a 'default' entry for the default database.
-databases = {
- 'default' : { 'path' : %(default_db)r,
- 'showGeneral' : 1,
- 'showNightlytest' : 1,
- 'showSimple' : 1,
- 'db_version' : %(default_db_version)r },
- }
-
-# The LNT email configuration.
-#
-# The 'to' field can be either a single email address, or a list of
-# (regular-expression, address) pairs. In the latter form, the machine name of
-# the submitted results is matched against the regular expressions to determine
-# which email address to use for the results.
-nt_emailer = {
- 'enabled' : False,
- 'host' : None,
- 'from' : None,
-
- # This is a list of (filter-regexp, address) pairs -- it is evaluated in
- # order based on the machine name. This can be used to dispatch different
- # reports to different email address.
- 'to' : [(".*", None)],
- }
-
-# Enable automatic restart using the wsgi_restart module; this should be off in
-# a production environment.
-wsgi_restart = False
-"""
-
-kWSGITemplate = """\
-#!%(python_executable)s
-# -*- Python -*-
-
-import lnt.server.ui.app
-
-application = lnt.server.ui.app.App.create_standalone(
- %(cfg_path)r)
-
-if __name__ == "__main__":
- import werkzeug
- werkzeug.run_simple('localhost', 8000, application)
-"""
-
-###
-
-import lnt.testing
-import lnt.server.db.v4db
-
-def action_create(name, args):
- """create an LLVM nightly test installation"""
-
- from optparse import OptionParser, OptionGroup
- parser = OptionParser("%%prog %s [options] <path>" % name)
- parser.add_option("", "--name", dest="name", default="LNT",
- help="name to use for the installation [%default]")
- parser.add_option("", "--config", dest="config", default="lnt.cfg",
- help="name of the LNT config file [%default]")
- parser.add_option("", "--wsgi", dest="wsgi", default="lnt.wsgi",
- help="name of the WSGI app [%default]")
- parser.add_option("", "--tmp-dir", dest="tmp_dir", default="lnt_tmp",
- help="name of the temp file directory [%default]")
- parser.add_option("", "--db-dir", dest="db_dir", default="data",
- help="name of the directory to hold databases")
- parser.add_option("", "--default-db", dest="default_db", default="lnt.db",
- help="name for the default db [%default]", metavar="NAME")
- parser.add_option("", "--hostname", dest="hostname",
- default=platform.uname()[1],
- help="host name of the server [%default]", metavar="NAME")
- parser.add_option("", "--hostsuffix", dest="hostsuffix", default="perf",
- help="suffix at which WSGI app lives [%default]",
- metavar="NAME")
-
- (opts, args) = parser.parse_args(args)
- if len(args) != 1:
- parser.error("invalid number of arguments")
-
- path, = args
-
- name = opts.name
- config = opts.config
- wsgi = opts.wsgi
- tmp_dir = opts.tmp_dir
- db_dir = opts.db_dir
- default_db = opts.default_db
- hostname = opts.hostname
- hostsuffix = opts.hostsuffix
- default_db_version = "0.4"
-
- basepath = os.path.abspath(path)
- if os.path.exists(basepath):
- raise SystemExit,"error: invalid path: %r already exists" % path
-
- hosturl = "http://%s/%s" % (hostname, hostsuffix)
-
- python_executable = sys.executable
- db_dir_path = os.path.join(basepath, db_dir)
- cfg_path = os.path.join(basepath, config)
- db_path = os.path.join(db_dir_path, default_db)
- tmp_path = os.path.join(basepath, tmp_dir)
- wsgi_path = os.path.join(basepath, wsgi)
-
- os.mkdir(path)
- os.mkdir(db_dir_path)
- os.mkdir(tmp_path)
-
- cfg_version = kConfigVersion
- cfg_file = open(cfg_path, 'w')
- cfg_file.write(kConfigTemplate % locals())
- cfg_file.close()
-
- wsgi_file = open(wsgi_path, 'w')
- wsgi_file.write(kWSGITemplate % locals())
- wsgi_file.close()
- os.chmod(wsgi_path, 0755)
-
- db_class = lnt.server.db.v4db.V4DB
- db = db_class('sqlite:///' + db_path)
- db.commit()
-
- print 'created LNT configuration in %r' % basepath
- print ' configuration file: %s' % cfg_path
- print ' WSGI app : %s' % wsgi_path
- print ' database file : %s' % db_path
- print ' temporary dir : %s' % tmp_path
- print ' host URL : %s' % hosturl
- print
- print 'You can execute:'
- print ' %s' % wsgi_path
- print 'to test your installation with the builtin server.'
- print
- print 'For production use configure this application to run with any'
- print 'WSGI capable web server. You may need to modify the permissions'
- print 'on the database and temporary file directory to allow writing'
- print 'by the web app.'
- print
Removed: zorg/trunk/lnt/lnt/lnttool/import_data.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/lnttool/import_data.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/lnttool/import_data.py (original)
+++ zorg/trunk/lnt/lnt/lnttool/import_data.py (removed)
@@ -1,66 +0,0 @@
-import os, pprint, sys, time
-
-import lnt.db.perfdb
-from lnt import formats
-import lnt.server.config
-import lnt.server.db.v4db
-import lnt.util.ImportData
-
-def action_import(name, args):
- """import test data into a database"""
-
- from optparse import OptionParser, OptionGroup
-
- parser = OptionParser("%%prog %s [options] <path|config-file> <file>+"%name)
- parser.add_option("", "--database", dest="database", default="default",
- help="database to write to [%default]")
- parser.add_option("", "--format", dest="format",
- choices=formats.format_names + ['<auto>'],
- default='<auto>')
- parser.add_option("", "--commit", dest="commit", type=int,
- default=False)
- parser.add_option("", "--show-sql", dest="show_sql", action="store_true",
- default=False)
- parser.add_option("", "--show-sample-count", dest="show_sample_count",
- action="store_true", default=False)
- parser.add_option("", "--show-raw-result", dest="show_raw_result",
- action="store_true", default=False)
- parser.add_option("-v", "--verbose", dest="verbose",
- help="show verbose test results",
- action="store_true", default=False)
- parser.add_option("", "--no-email", dest="no_email",
- action="store_true", default=False)
- parser.add_option("", "--no-report", dest="no_report",
- action="store_true", default=False)
- (opts, args) = parser.parse_args(args)
-
- if len(args) < 2:
- parser.error("invalid number of arguments")
-
- path = args.pop(0)
-
- # Load the LNT configuration.
- config = lnt.server.config.get_config_from_path(path)
-
- # Get the database.
- db = config.get_database(opts.database, echo=opts.show_sql)
-
- # Load the database.
- success = True
- for file in args:
- result = lnt.util.ImportData.import_and_report(
- config, opts.database, db, file,
- opts.format, opts.commit, opts.show_sample_count,
- opts.no_email, opts.no_report)
-
- success &= result.get('success', False)
- if opts.show_raw_result:
- pprint.pprint(result)
- else:
- lnt.util.ImportData.print_report_result(result, sys.stdout,
- sys.stderr,
- opts.verbose)
-
- if not success:
- raise SystemExit, 1
-
Removed: zorg/trunk/lnt/lnt/lnttool/main.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/lnttool/main.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/lnttool/main.py (original)
+++ zorg/trunk/lnt/lnt/lnttool/main.py (removed)
@@ -1,253 +0,0 @@
-"""Implement the command line 'lnt' tool."""
-
-import os
-import shutil
-import sys
-import tarfile
-import tempfile
-from optparse import OptionParser, OptionGroup
-
-import StringIO
-import lnt
-import lnt.util.ImportData
-from lnt import testing
-from lnt.db import perfdb
-from lnt.testing.util.commands import note, warning, error, fatal
-
-def action_runserver(name, args):
- """start a new development server"""
-
- parser = OptionParser("%%prog %s [options] [<path|config file>]" % name)
- parser.add_option("", "--hostname", dest="hostname", type=str,
- help="host interface to use [%default]",
- default='localhost')
- parser.add_option("", "--port", dest="port", type=int, metavar="N",
- help="local port to use [%default]", default=8000)
- parser.add_option("", "--reloader", dest="reloader", default=False,
- action="store_true", help="use WSGI reload monitor")
- parser.add_option("", "--debugger", dest="debugger", default=False,
- action="store_true", help="use WSGI debugger")
- parser.add_option("", "--threaded", dest="threaded", default=False,
- action="store_true", help="use a threaded server")
- parser.add_option("", "--processes", dest="processes", type=int,
- metavar="N", help="number of processes to use [%default]",
- default=1)
-
- (opts, args) = parser.parse_args(args)
- if len(args) != 1:
- parser.error("invalid number of arguments")
-
- input_path, = args
-
- # Accept paths to config files, or to directories containing 'lnt.cfg'.
- tmpdir = None
- if os.path.isdir(input_path):
- config_path = os.path.join(input_path, 'lnt.cfg')
- elif tarfile.is_tarfile(input_path):
- # Accept paths to tar/tgz etc. files, which we automatically unpack into
- # a temporary directory.
- tmpdir = tempfile.mkdtemp(suffix='lnt')
-
- note("extracting input tarfile %r to %r" % (input_path, tmpdir))
- tf = tarfile.open(input_path)
- tf.extractall(tmpdir)
-
- # Find the LNT instance inside the tar file. Support tarballs that
- # either contain the instance directly, or contain a single subdirectory
- # which is the instance.
- if os.path.exists(os.path.join(tmpdir, "lnt.cfg")):
- config_path = os.path.join(tmpdir, "lnt.cfg")
- else:
- filenames = os.listdir(tmpdir)
- if len(filenames) != 1:
- fatal("unable to find LNT instance inside tarfile")
- config_path = os.path.join(tmpdir, filenames[0], "lnt.cfg")
- else:
- config_path = input_path
-
- if not config_path or not os.path.exists(config_path):
- raise SystemExit,"error: invalid config: %r" % config_path
-
- import lnt.server.ui.app
- instance = lnt.server.ui.app.App.create_standalone(
- config_path = config_path)
- if opts.debugger:
- instance.debug = True
- try:
- instance.run(opts.hostname, opts.port,
- use_reloader = opts.reloader,
- use_debugger = opts.debugger,
- threaded = opts.threaded,
- processes = opts.processes)
- finally:
- # Clean up the tmpdir if we automatically unpacked a tarfile.
- if tmpdir is not None:
- print tmpdir
- shutil.rmtree(tmpdir)
-
-from create import action_create
-from convert import action_convert
-from import_data import action_import
-from report import action_report
-from updatedb import action_updatedb
-
-def action_checkformat(name, args):
- """check the format of an LNT test report file"""
-
- parser = OptionParser("%%prog %s [options] files" % name)
-
- (opts, args) = parser.parse_args(args)
- if len(args) > 1:
- parser.error("incorrect number of argments")
-
- if len(args) == 0:
- input = '-'
- else:
- input, = args
-
- if input == '-':
- input = StringIO.StringIO(sys.stdin.read())
-
- db = lnt.server.db.v4db.V4DB('sqlite:///:memory:')
- result = lnt.util.ImportData.import_and_report(
- None, None, db, input, 'json', commit = True)
- lnt.util.ImportData.print_report_result(result, sys.stdout, sys.stderr,
- verbose = True)
-
-def action_runtest(name, args):
- """run a builtin test application"""
-
- parser = OptionParser("%%prog %s test-name [options]" % name)
- parser.disable_interspersed_args()
- parser.add_option("", "--submit", dest="submit_url", metavar="URLORPATH",
- help=("autosubmit the test result to the given server "
- "(or local instance) [%default]"),
- type=str, default=None)
- parser.add_option("", "--commit", dest="commit",
- help=("whether the autosubmit result should be committed "
- "[%default]"),
- type=int, default=True)
- parser.add_option("", "--output", dest="output", metavar="PATH",
- help="write raw report data to PATH (or stdout if '-')",
- action="store", default=None)
- parser.add_option("-v", "--verbose", dest="verbose",
- help="show verbose test results",
- action="store_true", default=False)
-
- (opts, args) = parser.parse_args(args)
- if len(args) < 1:
- parser.error("incorrect number of argments")
-
- test_name,args = args[0],args[1:]
-
- import lnt.tests
- try:
- test_instance = lnt.tests.get_test_instance(test_name)
- except KeyError:
- parser.error('invalid test name %r' % test_name)
-
- report = test_instance.run_test('%s %s' % (name, test_name), args)
-
- if opts.output is not None:
- if opts.output == '-':
- output_stream = sys.stdout
- else:
- output_stream = open(opts.output, 'w')
- print >>output_stream, report.render()
- if output_stream is not sys.stdout:
- output_stream.close()
-
- # Save the report to a temporary file.
- #
- # FIXME: This is silly, the underlying test probably wrote the report to a
- # file itself. We need to clean this up and make it standard across all
- # tests. That also has the nice side effect that writing into a local
- # database records the correct imported_from path.
- tmp = tempfile.NamedTemporaryFile(suffix='.json')
- print >>tmp, report.render()
- tmp.flush()
-
- if opts.submit_url is not None:
- if report is None:
- raise SystemExit,"error: report generation failed"
-
- from lnt.util import ServerUtil
- test_instance.log("submitting result to %r" % (opts.submit_url,))
- ServerUtil.submitFile(opts.submit_url, tmp.name, True, opts.verbose)
- else:
- # Simulate a submission to retrieve the results report.
-
- # Construct a temporary database and import the result.
- test_instance.log("submitting result to dummy instance")
- db = lnt.server.db.v4db.V4DB("sqlite:///:memory:")
- result = lnt.util.ImportData.import_and_report(
- None, None, db, tmp.name, 'json', commit = True)
- lnt.util.ImportData.print_report_result(result, sys.stdout, sys.stderr,
- opts.verbose)
-
- tmp.close()
-
-def action_showtests(name, args):
- """show the available built-in tests"""
-
- parser = OptionParser("%%prog %s" % name)
- (opts, args) = parser.parse_args(args)
- if len(args) != 0:
- parser.error("incorrect number of argments")
-
- import lnt.tests
-
- print 'Available tests:'
- test_names = lnt.tests.get_test_names()
- max_name = max(map(len, test_names))
- for name in test_names:
- print ' %-*s - %s' % (max_name, name,
- lnt.tests.get_test_description(name))
-
-def action_submit(name, args):
- """submit a test report to the server"""
-
- parser = OptionParser("%%prog %s [options] <url> <file>+" % name)
- parser.add_option("", "--commit", dest="commit", type=int,
- help=("whether the result should be committed "
- "[%default]"),
- default=False)
- parser.add_option("-v", "--verbose", dest="verbose",
- help="show verbose test results",
- action="store_true", default=False)
-
- (opts, args) = parser.parse_args(args)
- if len(args) < 2:
- parser.error("incorrect number of argments")
-
- from lnt.util import ServerUtil
- ServerUtil.submitFiles(args[0], args[1:], opts.commit, opts.verbose)
-
-###
-
-commands = dict((name[7:], f) for name,f in locals().items()
- if name.startswith('action_'))
-def main():
- cmds_width = max(map(len, commands))
- parser = OptionParser("""\
-%%prog [options] <command> ... arguments ...
-
-Available commands:
-%s""" % ("\n".join(" %-*s - %s" % (cmds_width, name, func.__doc__)
- for name, func in sorted(commands.items()))),
- version = "lnt version %s" % lnt.__version__)
- parser.disable_interspersed_args()
- (opts, args) = parser.parse_args()
-
- if not args:
- parser.print_usage()
- return
-
- cmd = args[0]
- if cmd not in commands:
- parser.error("invalid command: %r" % cmd)
-
- commands[cmd](cmd, args[1:])
-
-if __name__ == '__main__':
- main()
Removed: zorg/trunk/lnt/lnt/lnttool/report.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/lnttool/report.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/lnttool/report.py (original)
+++ zorg/trunk/lnt/lnt/lnttool/report.py (removed)
@@ -1,217 +0,0 @@
-from optparse import OptionParser, OptionGroup
-
-from lnt import testing
-from lnt.db import perfdb
-from lnt.db import perfdbsummary, runinfo
-from lnt.db.perfdb import Run, RunInfo, Machine, Sample, Test
-from lnt.testing.util.commands import note, warning, error, fatal
-from lnt.util import stats
-
-def print_table(rows):
- def format_cell(value):
- if isinstance(value, str):
- return value
- elif isinstance(value, int):
- return str(value)
- elif isinstance(value, float):
- return "%.4f" % value
- else:
- return str(value)
-
- N = len(rows[0])
- for row in rows:
- if len(row) != N:
- raise ValueError,"Invalid table"
-
- print "\t".join(map(format_cell, row))
-
-def action_report(name, args):
- """performance reporting tools"""
-
- parser = OptionParser("""\
-%%prog %s [options] <db>""" % name)
- parser.add_option("-v", "--verbose", dest="verbose",
- help="show verbose test results",
- action="store_true", default=False)
- parser.add_option("", "--run-order", dest="run_order",
- help="run order to select on",
- type=int, default=None)
- parser.add_option("", "--arch", dest="arch",
- help="arch field to select on",
- type=str, default=None)
- parser.add_option("", "--optflags", dest="optflags",
- help="optimization flags field to select on",
- type=str, default=None)
- parser.add_option("", "--machine", dest="machine_name",
- help="machine name to select on",
- type=str, default=None)
-
- (opts, args) = parser.parse_args(args)
- if len(args) != 1:
- parser.error("incorrect number of argments")
-
- path, = args
- db = perfdb.PerfDB('sqlite:///%s' % path)
- tag = 'nts'
-
- if opts.run_order is None:
- parser.error("--run-order is required")
-
- # First, find all runs with the desired order.
- q = db.session.query(Run).\
- join(RunInfo).\
- order_by(Run.start_time.desc()).\
- filter(RunInfo.key == "run_order").\
- filter(RunInfo.value == "% 7d" % opts.run_order)
- matching_runs = list(q)
-
- # Try to help user if nothing was found.
- if not matching_runs:
- available_orders = set(
- db.session.query(RunInfo.value).\
- filter(RunInfo.key == "run_order"))
- fatal("no runs found matching --run-order %d, available orders: %s" % (
- opts.run_order, str(sorted(int(x)
- for x, in available_orders))))
-
- # Match based on the machine name, if given.
- if opts.machine_name:
- selected = [r for r in matching_runs
- if r.machine.name == opts.machine_name]
- if not selected:
- available_names = set(r.machine.name
- for r in matching_runs)
- fatal(
- "no runs found matching --machine %s, available names: [%s]" %(
- opts.machine_name, ", ".join(sorted(available_names))))
- matching_runs = selected
-
- # Match based on the architecture, if given.
- if opts.arch:
- selected = [r for r in matching_runs
- if 'ARCH' in r.info
- if r.info['ARCH'].value == opts.arch]
- if not selected:
- available_archs = set(r.info['ARCH'].value
- for r in matching_runs
- if 'ARCH' in r.info)
- fatal("no runs found matching --arch %s, available archs: [%s]" % (
- opts.arch, ", ".join(sorted(available_archs))))
- matching_runs = selected
-
- # Match based on the optflags, if given.
- if opts.optflags:
- selected = [r for r in matching_runs
- if 'OPTFLAGS' in r.info
- if r.info['OPTFLAGS'].value == opts.optflags]
- if not selected:
- available_flags = set(r.info['OPTFLAGS'].value
- for r in matching_runs
- if 'OPTFLAGS' in r.info)
- fatal(
- "no runs found matching --optflags %s, available flags: [%s]" %(
- opts.optflags, ", ".join(sorted(available_flags))))
- matching_runs = selected
-
- # Inform the user of the final list of selected runs.
- note("selection arguments resulted in %d runs" % (len(matching_runs),))
- for run in matching_runs:
- note("Run: % 5d, Start Time: %s, Machine: %s:%d" % (
- run.id, run.start_time.strftime('%Y-%m-%d %H:%M:%S'),
- run.machine.name, run.machine.number))
-
- # Take only the first matched run, for now. This will be the latest, by the
- # original ordering clause.
- note("selecting newest run for reporting...")
- matching_runs = [matching_runs[0]]
-
- # Inform the user of the final list of selected runs.
- note("reporting over %d total runs" % (len(matching_runs),))
- for run in matching_runs:
- note("Run: % 5d, Start Time: %s, Machine: %s:%d" % (
- run.id, run.start_time.strftime('%Y-%m-%d %H:%M:%S'),
- run.machine.name, run.machine.number))
-
- # Get the run summary which has run ordering information.
- run_summary = perfdbsummary.SimpleSuiteRunSummary.get_summary(db, tag)
-
- # Load the test suite summary.
- ts_summary = perfdbsummary.get_simple_suite_summary(db, tag)
-
- # Gather the names of all tests across these runs, for more normalized
- # reporting.
- test_names = ts_summary.get_test_names_in_runs(
- db, [r.id for r in matching_runs])
- test_components = sorted(set(t.rsplit('.',1)[1] for t in test_names))
- test_base_names = sorted(set(t.rsplit('.',1)[0] for t in test_names))
-
- # Load all the data.
- items = {}
- for test_component in test_components:
- for name,value in get_test_passes(db, run_summary, ts_summary,
- test_component, test_base_names,
- matching_runs):
- items[(test_component, name)] = value
-
- # Dump the results.
- print "%s\t%s\t%s\t%s\t%s\t%s\t%s" % (
- "Test", "Mean Compile Time", "Mean Execution Time",
- "Std.Dev. Compile Time", "Std.Dev. Execution Time",
- "Num. Compile Time Samples", "Num. Execution Time Samples")
- for name in test_base_names:
- compile_results = items.get(('compile', name), [])
- exec_results = items.get(('exec', name), [])
- if compile_results:
- compile_value = "%.4f" % stats.mean(compile_results)
- compile_stddev = "%.4f" % stats.standard_deviation(compile_results)
- else:
- compile_value = compile_stddev = ""
- if exec_results:
- exec_value = "%.4f" % stats.mean(exec_results)
- exec_stddev = "%.4f" % stats.standard_deviation(exec_results)
- else:
- exec_value = exec_stddev = ""
- print "%s\t%s\t%s\t%s\t%s\t%d\t%d" % (
- name, compile_value, exec_value,
- compile_stddev, exec_stddev,
- len(compile_results), len(exec_results))
-
-def get_test_passes(db, run_summary, ts_summary,
- test_component, test_base_names, runs):
- if not runs:
- return
-
- sri = runinfo.SimpleRunInfo(db, ts_summary)
- sri._load_samples_for_runs([r.id for r in runs])
-
- run_status_info = [(r, run_summary.get_run_status_kind(db, r.id))
- for r in runs]
-
- pset = ()
- for test_base_name in test_base_names:
- test_name = "%s.%s" % (test_base_name, test_component)
- test_id = ts_summary.test_id_map.get((test_name, pset))
- if test_id is None:
- continue
-
- run_values = sum((sri.sample_map.get((run.id, test_id))
- for run in runs
- if (run.id, test_id) in sri.sample_map), [])
- # Ignore tests that weren't reported in some runs (e.g., -disable-cxx).
- if not run_values:
- continue
-
- # Find the test status, treat any non-determinism as a FAIL.
- run_status = list(set([sri.get_test_status_in_run(
- r.id, rsk, test_name, pset)
- for (r,rsk) in run_status_info]))
- if len(run_status) == 1:
- status_kind = run_status[0]
- else:
- status_kind = testing.FAIL
-
- # Ignore failing methods.
- if status_kind == testing.FAIL:
- continue
-
- yield (test_base_name, run_values)
Removed: zorg/trunk/lnt/lnt/lnttool/updatedb.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/lnttool/updatedb.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/lnttool/updatedb.py (original)
+++ zorg/trunk/lnt/lnt/lnttool/updatedb.py (removed)
@@ -1,78 +0,0 @@
-import os
-from optparse import OptionParser, OptionGroup
-
-import lnt.server.config
-from lnt.testing.util.commands import note, warning, error, fatal
-
-def action_updatedb(name, args):
- """modify a database"""
-
- from optparse import OptionParser, OptionGroup
-
- parser = OptionParser("%%prog %s [options] <path|config-file> <file>+"%name)
- parser.add_option("", "--database", dest="database", default="default",
- help="database to modify [%default]")
- parser.add_option("", "--testsuite", dest="testsuite",
- help="testsuite to modify")
- parser.add_option("", "--commit", dest="commit", type=int,
- default=False)
- parser.add_option("", "--show-sql", dest="show_sql", action="store_true",
- default=False)
- parser.add_option("", "--delete-machine", dest="delete_machines",
- action="append", default=[])
- parser.add_option("", "--delete-run", dest="delete_runs",
- action="append", default=[], type=int)
- (opts, args) = parser.parse_args(args)
-
- if len(args) != 1:
- parser.error("invalid number of arguments")
-
- if opts.testsuite is None:
- parser.error("--testsuite is required")
-
- config, = args
-
- # Accept paths to config files, or to directories containing 'lnt.cfg'.
- if os.path.isdir(config):
- tmp = os.path.join(config, 'lnt.cfg')
- if os.path.exists(tmp):
- config = tmp
-
- # Load the config file.
- config_data = {}
- exec open(config) in config_data
- config = lnt.server.config.Config.fromData(config, config_data)
-
- # Get the database and test suite.
- db = config.get_database(opts.database, echo=opts.show_sql)
- ts = db.testsuite[opts.testsuite]
-
- # Compute a list of all the runs to delete.
- runs_to_delete = list(opts.delete_runs)
- if opts.delete_machines:
- runs_to_delete.extend(
- id
- for id, in ts.query(ts.Run.id).\
- join(ts.Machine).\
- filter(ts.Machine.name.in_(opts.delete_machines)))
-
- # Delete all samples associated with those runs.
- ts.query(ts.Sample).\
- filter(ts.Sample.run_id.in_(runs_to_delete)).\
- delete(synchronize_session=False)
-
- # Delete all those runs.
- ts.query(ts.Run).\
- filter(ts.Run.id.in_(runs_to_delete)).\
- delete(synchronize_session=False)
-
- # Delete the machines.
- for name in opts.delete_machines:
- num_deletes = ts.query(ts.Machine).filter_by(name=name).delete()
- if num_deletes == 0:
- warning("unable to find machine named: %r" % name)
-
- if opts.commit:
- db.commit()
- else:
- db.rollback()
Removed: zorg/trunk/lnt/lnt/server/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/__init__.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/__init__.py (original)
+++ zorg/trunk/lnt/lnt/server/__init__.py (removed)
@@ -1 +0,0 @@
-__all__ = []
Removed: zorg/trunk/lnt/lnt/server/config.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/config.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/config.py (original)
+++ zorg/trunk/lnt/lnt/server/config.py (removed)
@@ -1,140 +0,0 @@
-"""
-LNT Config object for tracking user-configurable installation parameters.
-"""
-
-import os
-import re
-
-import lnt.db.perfdb
-import lnt.server.db.v4db
-
-class EmailConfig:
- @staticmethod
- def fromData(data):
- # The email to field can either be a string, or a list of tuples of
- # the form [(accept-regexp-pattern, to-address)].
- to_address = data.get('to')
- if not isinstance(to_address, str):
- to_address = [(str(a),str(b)) for a,b in to_address]
- return EmailConfig(bool(data.get('enabled')), str(data.get('host')),
- str(data.get('from')), to_address)
-
- def __init__(self, enabled, host, from_address, to_address):
- self.enabled = enabled
- self.host = host
- self.from_address = from_address
- self.to_address = to_address
-
- def get_to_address(self, machine_name):
- # The email to_address field can either be a string, or a list of tuples
- # of the form [(accept-regexp-pattern, to-address)].
- if isinstance(self.to_address, str):
- return self.to_address
-
- for pattern,addr in self.to_address:
- if re.match(pattern, machine_name):
- return addr
-
-class DBInfo:
- @staticmethod
- def fromData(baseDir, dict, default_email_config):
- dbPath = dict.get('path')
- if '://' not in dbPath:
- dbPath = os.path.join(baseDir, dbPath)
-
- # Support per-database email configurations.
- email_config = default_email_config
- if 'emailer' in dict:
- email_config = EmailConfig.fromData(dict['emailer'])
-
- return DBInfo(dbPath,
- bool(dict.get('showNightlytest')),
- bool(dict.get('showGeneral')),
- bool(dict.get('showSimple')),
- str(dict.get('db_version', '0.3')),
- dict.get('shadow_import', None),
- dict.get('simple_run_source', None),
- email_config)
-
- def __init__(self, path, showNightlytest, showGeneral, showSimple,
- db_version, shadow_import, simple_run_source, email_config):
- self.config = None
- self.path = path
- self.showGeneral = showGeneral
- self.showNightlytest = showNightlytest
- self.showSimple = showSimple
- self.db_version = db_version
- self.shadow_import = shadow_import
- self.simple_run_source = simple_run_source
- self.email_config = email_config
-
-class Config:
- @staticmethod
- def fromData(path, data):
- # Paths are resolved relative to the absolute real path of the
- # config file.
- baseDir = os.path.dirname(os.path.abspath(path))
-
- # Get the default email config.
- emailer = data.get('nt_emailer')
- if emailer:
- default_email_config = EmailConfig.fromData(emailer)
- else:
- default_email_config = EmailConfig(False, '', '', [])
-
- dbDir = data.get('db_dir', '.')
- dbDirPath = os.path.join(baseDir, dbDir)
-
- # FIXME: Remove this default.
- tempDir = data.get('tmp_dir', 'viewer/resources/graphs')
-
- return Config(data.get('name', 'LNT'), data['zorgURL'],
- dbDir, os.path.join(baseDir, tempDir),
- dict([(k,DBInfo.fromData(dbDirPath, v,
- default_email_config))
- for k,v in data['databases'].items()]))
-
- def __init__(self, name, zorgURL, dbDir, tempDir, databases):
- self.name = name
- self.zorgURL = zorgURL
- self.dbDir = dbDir
- self.tempDir = tempDir
- while self.zorgURL.endswith('/'):
- self.zorgURL = zorgURL[:-1]
- self.databases = databases
- for db in self.databases.values():
- db.config = self
-
- def get_database(self, name, echo=False):
- """
- get_database(name, echo=False) -> db or None
-
- Return the appropriate instance of the database with the given name, or
- None if there is no database with that name."""
-
- # Get the database entry.
- db_entry = self.databases.get(name)
- if db_entry is None:
- return None
-
- # Instantiate the appropriate database version.
- if db_entry.db_version == '0.3':
- return lnt.db.perfdb.PerfDB(db_entry.path, echo=echo)
- if db_entry.db_version == '0.4':
- return lnt.server.db.v4db.V4DB(db_entry.path, echo=echo)
-
- raise NotImplementedError,"unable to import to version %r database" % (
- db_entry.db_version,)
-
-def get_config_from_path(path):
- # Accept paths to config files or to directories containing 'lnt.cfg'.
- if os.path.isdir(path):
- config_path = os.path.join(path, 'lnt.cfg')
- else:
- config_path = path
-
- # Load the config file.
- config_data = {}
- exec open(config_path) in config_data
- return lnt.server.config.Config.fromData(config_path, config_data)
-
Removed: zorg/trunk/lnt/lnt/server/db/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/db/__init__.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/db/__init__.py (original)
+++ zorg/trunk/lnt/lnt/server/db/__init__.py (removed)
@@ -1 +0,0 @@
-__all__ = []
Removed: zorg/trunk/lnt/lnt/server/db/testsuite.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/db/testsuite.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/db/testsuite.py (original)
+++ zorg/trunk/lnt/lnt/server/db/testsuite.py (removed)
@@ -1,203 +0,0 @@
-"""
-Database models for the TestSuites abstraction.
-"""
-
-import lnt
-
-import sqlalchemy
-import sqlalchemy.ext.declarative
-import sqlalchemy.orm
-from sqlalchemy import *
-from sqlalchemy.schema import Index
-from sqlalchemy.orm import relation
-
-Base = sqlalchemy.ext.declarative.declarative_base()
-
-class SampleType(Base):
- """
- The SampleType table describes an enumeration for the possible types clients
- can configure for different sample fields.
- """
- __tablename__ = 'SampleType'
-
- id = Column("ID", Integer, primary_key=True)
- name = Column("Name", String(256), unique=True)
-
- # FIXME: We expect the database to have a limited number of instances of
- # this class, we should just provide static class variables for the various
- # types once bound.
-
- def __init__(self, name):
- self.name = name
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__, (self.name,))
-
-class StatusKind(Base):
- """
- The StatusKind table describes an enumeration for the possible values
- clients can use for "Status" typed samples. This is designed to match the
- values which are in use by test produces and are defined in the lnt.testing
- module.
- """
-
- __tablename__ = 'StatusKind'
-
- id = Column("ID", Integer, primary_key=True)
- name = Column("Name", String(256), unique=True)
-
- def __init__(self, id, name):
- self.id = id
- self.name = name
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__, (self.name,))
-
-class TestSuite(Base):
- __tablename__ = 'TestSuite'
-
- id = Column("ID", Integer, primary_key=True)
- name = Column("Name", String(256), unique=True)
-
- # The name we use to prefix the per-testsuite databases.
- db_key_name = Column("DBKeyName", String(256))
-
- # The version of the schema used for the per-testsuite databases (encoded as
- # the LNT version).
- version = Column("Version", String(16))
-
- machine_fields = relation('MachineField', backref='test_suite')
- order_fields = relation('OrderField', backref='test_suite')
- run_fields = relation('RunField', backref='test_suite')
- sample_fields = relation('SampleField', backref='test_suite')
-
- def __init__(self, name, db_key_name):
- self.name = name
- self.db_key_name = db_key_name
- self.version = "%d.%d" % (lnt.__versioninfo__[0],
- lnt.__versioninfo__[1])
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__, (self.name, self.db_key_name,
- self.version))
-
-class MachineField(Base):
- __tablename__ = 'TestSuiteMachineFields'
-
- id = Column("ID", Integer, primary_key=True)
- test_suite_id = Column("TestSuiteID", Integer, ForeignKey('TestSuite.ID'),
- index=True)
- name = Column("Name", String(256))
-
- # The info key describes the key to expect this field to be present as in
- # the reported machine information. Missing keys result in NULL values in
- # the database.
- info_key = Column("InfoKey", String(256))
-
- def __init__(self, name, info_key):
- self.name = name
- self.info_key = info_key
-
- # Column instance for fields which have been bound (non-DB
- # parameter). This is provided for convenience in querying.
- self.column = None
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__, (self.name, self.info_key))
-
-class OrderField(Base):
- __tablename__ = 'TestSuiteOrderFields'
-
- id = Column("ID", Integer, primary_key=True)
- test_suite_id = Column("TestSuiteID", Integer, ForeignKey('TestSuite.ID'),
- index=True)
- name = Column("Name", String(256))
-
- # The info key describes the key to expect this field to be present as in
- # the reported machine information. Missing keys result in NULL values in
- # the database.
- info_key = Column("InfoKey", String(256))
-
- # The ordinal index this field should be used at for creating a
- # lexicographic ordering amongst runs.
- ordinal = Column("Ordinal", Integer)
-
- def __init__(self, name, info_key, ordinal):
- assert isinstance(ordinal, int) and ordinal >= 0
-
- self.name = name
- self.info_key = info_key
- self.ordinal = ordinal
-
- # Column instance for fields which have been bound (non-DB
- # parameter). This is provided for convenience in querying.
- self.column = None
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__, (self.name, self.info_key,
- self.ordinal))
-
-class RunField(Base):
- __tablename__ = 'TestSuiteRunFields'
-
- id = Column("ID", Integer, primary_key=True)
- test_suite_id = Column("TestSuiteID", Integer, ForeignKey('TestSuite.ID'),
- index=True)
- name = Column("Name", String(256))
-
- # The info key describes the key to expect this field to be present as in
- # the reported machine information. Missing keys result in NULL values in
- # the database.
- info_key = Column("InfoKey", String(256))
-
- def __init__(self, name, info_key):
- self.name = name
- self.info_key = info_key
-
- # Column instance for fields which have been bound (non-DB
- # parameter). This is provided for convenience in querying.
- self.column = None
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__, (self.name, self.info_key))
-
-class SampleField(Base):
- __tablename__ = 'TestSuiteSampleFields'
-
- id = Column("ID", Integer, primary_key=True)
- test_suite_id = Column("TestSuiteID", Integer, ForeignKey('TestSuite.ID'),
- index=True)
- name = Column("Name", String(256))
-
- # The type of sample this is.
- type_id = Column("Type", Integer, ForeignKey('SampleType.ID'))
- type = relation(SampleType)
-
- # The info key describes the key to expect this field to be present as in
- # the reported machine information. Missing keys result in NULL values in
- # the database.
- info_key = Column("InfoKey", String(256))
-
- # The status field is used to create a relation to the sample field that
- # reports the status (pass/fail/etc.) code related to this value. This
- # association is used by UI code to present the two status fields together.
- status_field_id = Column("status_field", Integer, ForeignKey(
- 'TestSuiteSampleFields.ID'))
- status_field = relation('SampleField', remote_side=id)
-
- def __init__(self, name, type, info_key, status_field = None):
- self.name = name
- self.type = type
- self.info_key = info_key
- self.status_field = status_field
-
- # Index of this column.
- self.index = None
-
- # Column instance for fields which have been bound (non-DB
- # parameter). This is provided for convenience in querying.
- self.column = None
-
- def __repr__(self):
- return '%s%r' % (self.__class__.__name__, (self.name, self.type,
- self.info_key))
Removed: zorg/trunk/lnt/lnt/server/db/testsuitedb.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/db/testsuitedb.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/db/testsuitedb.py (original)
+++ zorg/trunk/lnt/lnt/server/db/testsuitedb.py (removed)
@@ -1,731 +0,0 @@
-"""
-Database models for the TestSuite databases themselves.
-
-These are a bit magical because the models themselves are driven by the test
-suite metadata, so we only create the classes at runtime.
-"""
-
-import datetime
-import json
-
-import sqlalchemy
-from sqlalchemy import *
-
-import testsuite
-
-class TestSuiteDB(object):
- """
- Wrapper object for an individual test suites database tables.
-
- This wrapper is somewhat special in that it handles specializing the
- metatable instances for the given test suite.
-
- Clients are expected to only access the test suite database tables by going
- through the model classes constructed by this wrapper object.
- """
-
- def __init__(self, v4db, name, test_suite):
- testsuitedb = self
- self.v4db = v4db
- self.name = name
- self.test_suite = test_suite
-
- # Save caches of the various fields.
- self.machine_fields = list(self.test_suite.machine_fields)
- self.order_fields = list(self.test_suite.order_fields)
- self.run_fields = list(self.test_suite.run_fields)
- self.sample_fields = list(self.test_suite.sample_fields)
- for i,field in enumerate(self.sample_fields):
- field.index = i
-
- self.base = sqlalchemy.ext.declarative.declarative_base()
-
- # Create parameterized model classes for this test suite.
- class ParameterizedMixin(object):
- # Class variable to allow finding the associated test suite from
- # model instances.
- testsuite = self
-
- # Class variable (expected to be defined by subclasses) to allow
- # easy access to the field list for parameterized model classes.
- fields = None
-
- def get_field(self, field):
- return getattr(self, field.name)
-
- def set_field(self, field, value):
- return setattr(self, field.name, value)
-
- db_key_name = self.test_suite.db_key_name
- class Machine(self.base, ParameterizedMixin):
- __tablename__ = db_key_name + '_Machine'
-
- fields = self.machine_fields
- id = Column("ID", Integer, primary_key=True)
- name = Column("Name", String(256), index=True)
-
- # The parameters blob is used to store any additional information
- # reported by the run but not promoted into the machine record. Such
- # data is stored as a JSON encoded blob.
- parameters_data = Column("Parameters", Binary)
-
- # Dynamically create fields for all of the test suite defined
- # machine fields.
- class_dict = locals()
- for item in fields:
- if item.name in class_dict:
- raise ValueError,"test suite defines reserved key %r" % (
- name,)
-
- class_dict[item.name] = item.column = Column(
- item.name, String(256))
-
- def __init__(self, name):
- self.name = name
-
- def __repr__(self):
- return '%s_%s%r' % (db_key_name, self.__class__.__name__,
- (self.name,))
-
- @property
- def parameters(self):
- """dictionary access to the BLOB encoded parameters data"""
- return dict(json.loads(self.parameters_data))
-
- @parameters.setter
- def parameters(self, data):
- self.parameters_data = json.dumps(sorted(data.items()))
-
- class Order(self.base, ParameterizedMixin):
- __tablename__ = db_key_name + '_Order'
-
- # We guarantee that our fields are stored in the order they are
- # supposed to be lexicographically compared, the __cmp__ method
- # relies on this.
- fields = sorted(self.order_fields,
- key = lambda of: of.ordinal)
-
-
- id = Column("ID", Integer, primary_key=True)
-
- # Define two common columns which are used to store the previous and
- # next links for the total ordering amongst run orders.
- next_order_id = Column("NextOrder", Integer, ForeignKey(
- "%s.ID" % __tablename__))
- previous_order_id = Column("PreviousOrder", Integer, ForeignKey(
- "%s.ID" % __tablename__))
-
- # FIXME: <sheepish> I would really like to have next_order and
- # previous_order relation's here, but can't figure out how to
- # declare them </sheepsih>.
-
- # Dynamically create fields for all of the test suite defined order
- # fields.
- class_dict = locals()
- for item in self.order_fields:
- if item.name in class_dict:
- raise ValueError,"test suite defines reserved key %r" % (
- name,)
-
- class_dict[item.name] = item.column = Column(
- item.name, String(256))
-
- def __init__(self, previous_order_id = None, next_order_id = None,
- **kwargs):
- self.previous_order_id = previous_order_id
- self.next_order_id = next_order_id
-
- # Initialize fields (defaulting to None, for now).
- for item in self.fields:
- self.set_field(item, kwargs.get(item.name))
-
- def __repr__(self):
- fields = dict((item.name, self.get_field(item))
- for item in self.fields)
-
- return '%s_%s(%r, %r, **%r)' % (
- db_key_name, self.__class__.__name__,
- self.previous_order_id, self.next_order_id, fields)
-
- def __cmp__(self, b):
- # SA occassionally uses comparison to check model instances
- # verse some sentinels, so we ensure we support comparison
- # against non-instances.
- if self.__class__ is not b.__class__:
- return -1
-
- return cmp(tuple(self.get_field(item)
- for item in self.fields),
- tuple(b.get_field(item)
- for item in self.fields))
-
- class Run(self.base, ParameterizedMixin):
- __tablename__ = db_key_name + '_Run'
-
- fields = self.run_fields
- id = Column("ID", Integer, primary_key=True)
- machine_id = Column("MachineID", Integer, ForeignKey(Machine.id),
- index=True)
- order_id = Column("OrderID", Integer, ForeignKey(Order.id),
- index=True)
- imported_from = Column("ImportedFrom", String(512))
- start_time = Column("StartTime", DateTime)
- end_time = Column("EndTime", DateTime)
- simple_run_id = Column("SimpleRunID", Integer)
-
- # The parameters blob is used to store any additional information
- # reported by the run but not promoted into the machine record. Such
- # data is stored as a JSON encoded blob.
- parameters_data = Column("Parameters", Binary)
-
- machine = sqlalchemy.orm.relation(Machine)
- order = sqlalchemy.orm.relation(Order)
-
- # Dynamically create fields for all of the test suite defined run
- # fields.
- #
- # FIXME: We are probably going to want to index on some of these,
- # but need a bit for that in the test suite definition.
- class_dict = locals()
- for item in fields:
- if item.name in class_dict:
- raise ValueError,"test suite defines reserved key %r" % (
- name,)
-
- class_dict[item.name] = item.column = Column(
- item.name, String(256))
-
- def __init__(self, machine, order, start_time, end_time):
- self.machine = machine
- self.order = order
- self.start_time = start_time
- self.end_time = end_time
- self.imported_from = None
-
- def __repr__(self):
- return '%s_%s%r' % (db_key_name, self.__class__.__name__,
- (self.machine, self.order, self.start_time,
- self.end_time))
-
- @property
- def parameters(self):
- """dictionary access to the BLOB encoded parameters data"""
- return dict(json.loads(self.parameters_data))
-
- @parameters.setter
- def parameters(self, data):
- self.parameters_data = json.dumps(sorted(data.items()))
-
- class Test(self.base, ParameterizedMixin):
- __tablename__ = db_key_name + '_Test'
-
- id = Column("ID", Integer, primary_key=True)
- name = Column("Name", String(256), unique=True, index=True)
-
- def __init__(self, name):
- self.name = name
-
- def __repr__(self):
- return '%s_%s%r' % (db_key_name, self.__class__.__name__,
- (self.name,))
-
- class Sample(self.base, ParameterizedMixin):
- __tablename__ = db_key_name + '_Sample'
-
- fields = self.sample_fields
- id = Column("ID", Integer, primary_key=True)
- # We do not need an index on run_id, this is covered by the compound
- # (Run(ID),Test(ID)) index we create below.
- run_id = Column("RunID", Integer, ForeignKey(Run.id))
- test_id = Column("TestID", Integer, ForeignKey(Test.id), index=True)
-
- run = sqlalchemy.orm.relation(Run)
- test = sqlalchemy.orm.relation(Test)
-
- @staticmethod
- def get_primary_fields():
- """
- get_primary_fields() -> [SampleField*]
-
- Get the primary sample fields (those which are not associated
- with some other sample field).
- """
- status_fields = set(s.status_field
- for s in self.Sample.fields
- if s.status_field is not None)
- for field in self.Sample.fields:
- if field not in status_fields:
- yield field
-
- # Dynamically create fields for all of the test suite defined sample
- # fields.
- #
- # FIXME: We might want to index some of these, but for a different
- # reason than above. It is possible worth it to turn the compound
- # index below into a covering index. We should evaluate this once
- # the new UI is up.
- class_dict = locals()
- for item in self.sample_fields:
- if item.name in class_dict:
- raise ValueError,"test suite defines reserved key %r" % (
- name,)
-
- if item.type.name == 'Real':
- item.column = Column(item.name, Float)
- elif item.type.name == 'Status':
- item.column = Column(item.name, Integer, ForeignKey(
- testsuite.StatusKind.id))
- else:
- raise ValueError,(
- "test suite defines unknown sample type %r" (
- item.type.name,))
-
- class_dict[item.name] = item.column
-
- def __init__(self, run, test, **kwargs):
- self.run = run
- self.test = test
-
- # Initialize sample fields (defaulting to 0, for now).
- for item in self.fields:
- self.set_field(item, kwargs.get(item.name, None))
-
- def __repr__(self):
- fields = dict((item.name, self.get_field(item))
- for item in self.fields)
-
- return '%s_%s(%r, %r, **%r)' % (
- db_key_name, self.__class__.__name__,
- self.run, self.test, fields)
-
- self.Machine = Machine
- self.Run = Run
- self.Test = Test
- self.Sample = Sample
- self.Order = Order
-
- # Create the compound index we cannot declare inline.
- sqlalchemy.schema.Index("ix_%s_Sample_RunID_TestID" % db_key_name,
- Sample.run_id, Sample.test_id)
-
- # Create the index we use to ensure machine uniqueness.
- args = [Machine.name, Machine.parameters_data]
- for item in self.machine_fields:
- args.append(item.column)
- sqlalchemy.schema.Index("ix_%s_Machine_Unique" % db_key_name,
- *args, unique = True)
-
- # Create the test suite database tables in case this is a new database.
- self.base.metadata.create_all(self.v4db.engine)
-
- # Add several shortcut aliases, similar to the ones on the v4db.
- self.session = self.v4db.session
- self.add = self.v4db.add
- self.commit = self.v4db.commit
- self.query = self.v4db.query
- self.rollback = self.v4db.rollback
-
- def _getOrCreateMachine(self, machine_data):
- """
- _getOrCreateMachine(data) -> Machine, bool
-
- Add or create (and insert) a Machine record from the given machine data
- (as recorded by the test interchange format).
-
- The boolean result indicates whether the returned record was constructed
- or not.
- """
-
- # Convert the machine data into a machine record. We construct the query
- # to look for any existing machine at the same time as we build up the
- # record to possibly add.
- #
- # FIXME: This feels inelegant, can't SA help us out here?
- query = self.query(self.Machine).\
- filter(self.Machine.name == machine_data['Name'])
- machine = self.Machine(machine_data['Name'])
- machine_parameters = machine_data['Info'].copy()
-
- # First, extract all of the specified machine fields.
- for item in self.machine_fields:
- if item.info_key in machine_parameters:
- value = machine_parameters.pop(item.info_key)
- else:
- # For now, insert empty values for any missing fields. We don't
- # want to insert NULLs, so we should probably allow the test
- # suite to define defaults.
- value = ''
-
- query = query.filter(item.column == value)
- machine.set_field(item, value)
-
- # Convert any remaining machine_parameters into a JSON encoded blob. We
- # encode this as an array to avoid a potential ambiguity on the key
- # ordering.
- machine.parameters = machine_parameters
- query = query.filter(self.Machine.parameters_data ==
- machine.parameters_data)
-
- # Execute the query to see if we already have this machine.
- try:
- return query.one(),False
- except sqlalchemy.orm.exc.NoResultFound:
- # If not, add the machine.
- self.add(machine)
-
- return machine,True
-
- def _getOrCreateOrder(self, run_parameters):
- """
- _getOrCreateOrder(data) -> Order, bool
-
- Add or create (and insert) an Order record based on the given run
- parameters (as recorded by the test interchange format).
-
- The run parameters that define the order will be removed from the
- provided ddata argument.
-
- The boolean result indicates whether the returned record was constructed
- or not.
- """
-
- query = self.query(self.Order)
- order = self.Order()
-
- # First, extract all of the specified order fields.
- for item in self.order_fields:
- if item.info_key in run_parameters:
- value = run_parameters.pop(item.info_key)
- else:
- # We require that all of the order fields be present.
- raise ValueError,"""\
-supplied run is missing required run parameter: %r""" % (
- item.info_key)
-
- query = query.filter(item.column == value)
- order.set_field(item, value)
-
- # Execute the query to see if we already have this order.
- try:
- return query.one(),False
- except sqlalchemy.orm.exc.NoResultFound:
- # If not, then we need to insert this order into the total ordering
- # linked list.
-
- # Add the new order and flush, to assign an ID.
- self.add(order)
- self.v4db.session.flush()
-
- # Load all the orders.
- orders = list(self.query(self.Order))
-
- # Sort the objects to form the total ordering.
- orders.sort()
-
- # Find the order we just added.
- index = orders.index(order)
-
- # Insert this order into the linked list which forms the total
- # ordering.
- if index > 0:
- previous_order = orders[index - 1]
- previous_order.next_order_id = order.id
- order.previous_order_id = previous_order.id
- if index + 1 < len(orders):
- next_order = orders[index + 1]
- next_order.previous_order_id = order.id
- order.next_order_id = next_order.id
-
- return order,True
-
- def _getOrCreateRun(self, run_data, machine):
- """
- _getOrCreateRun(data) -> Run, bool
-
- Add a new Run record from the given data (as recorded by the test
- interchange format).
-
- The boolean result indicates whether the returned record was constructed
- or not.
- """
-
- # Extra the run parameters that define the order.
- run_parameters = run_data['Info'].copy()
-
- # The tag has already been used to dispatch to the appropriate database.
- run_parameters.pop('tag')
-
- # Find the order record.
- order,inserted = self._getOrCreateOrder(run_parameters)
- start_time = datetime.datetime.strptime(run_data['Start Time'],
- "%Y-%m-%d %H:%M:%S")
- end_time = datetime.datetime.strptime(run_data['End Time'],
- "%Y-%m-%d %H:%M:%S")
-
- # Convert the rundata into a run record. As with Machines, we construct
- # the query to look for any existingrun at the same time as we build up
- # the record to possibly add.
- #
- # FIXME: This feels inelegant, can't SA help us out here?
- query = self.query(self.Run).\
- filter(self.Run.machine_id == machine.id).\
- filter(self.Run.order_id == order.id).\
- filter(self.Run.start_time == start_time).\
- filter(self.Run.end_time == end_time)
- run = self.Run(machine, order, start_time, end_time)
-
- # First, extract all of the specified run fields.
- for item in self.run_fields:
- if item.info_key in run_parameters:
- value = run_parameters.pop(item.info_key)
- else:
- # For now, insert empty values for any missing fields. We don't
- # want to insert NULLs, so we should probably allow the test
- # suite to define defaults.
- value = ''
-
- query = query.filter(item.column == value)
- run.set_field(item, value)
-
- # Any remaining parameters are saved as a JSON encoded array.
- run.parameters = run_parameters
- query = query.filter(self.Run.parameters_data == run.parameters_data)
-
- # Execute the query to see if we already have this run.
- try:
- return query.one(),False
- except sqlalchemy.orm.exc.NoResultFound:
- # If not, add the run.
- self.add(run)
-
- return run,True
-
- def _importSampleValues(self, tests_data, run, tag):
- # We now need to transform the old schema data (composite samples split
- # into multiple tests with mangling) into the V4DB format where each
- # sample is a complete record.
- tag_dot = "%s." % tag
- tag_dot_len = len(tag_dot)
-
- # Load a map of all the tests, which we will extend when we find tests
- # that need to be added.
- test_cache = dict((test.name, test)
- for test in self.query(self.Test))
-
- # First, we aggregate all of the samples by test name. The schema allows
- # reporting multiple values for a test in two ways, one by multiple
- # samples and the other by multiple test entries with the same test
- # name. We need to handle both.
- tests_values = {}
- for test_data in tests_data:
- if test_data['Info']:
- raise ValueError,"""\
-test parameter sets are not supported by V4DB databases"""
-
- name = test_data['Name']
- if not name.startswith(tag_dot):
- raise ValueError,"""\
-test %r is misnamed for reporting under schema %r""" % (
- name, tag)
- name = name[tag_dot_len:]
-
- # Add all the values.
- values = tests_values.get(name)
- if values is None:
- tests_values[name] = values = []
-
- values.extend(test_data['Data'])
-
- # Next, build a map of test name to sample values, by scanning all the
- # tests. This is complicated by the interchange's support of multiple
- # values, which we cannot properly aggregate. We handle this by keying
- # off of the test name and the sample index.
- sample_records = {}
- for name,test_samples in tests_values.items():
- # Map this reported test name into a test name and a sample field.
- #
- # FIXME: This is really slow.
- for item in self.sample_fields:
- if name.endswith(item.info_key):
- test_name = name[:-len(item.info_key)]
- sample_field = item
- break
- else:
- # Disallow tests which do not map to a sample field.
- raise ValueError,"""\
-test %r does not map to a sample field in the reported suite""" % (
- name)
-
- # Get or create the test.
- test = test_cache.get(test_name)
- if test is None:
- test_cache[test_name] = test = self.Test(test_name)
- self.add(test)
-
- for i,value in enumerate(test_samples):
- record_key = (test_name, i)
- sample = sample_records.get(record_key)
- if sample is None:
- sample_records[record_key] = sample = self.Sample(run, test)
- self.add(sample)
-
- sample.set_field(sample_field, value)
-
- def importDataFromDict(self, data, config=None):
- """
- importDataFromDict(data) -> Run, bool
-
- Import a new run from the provided test interchange data, and return the
- constructed Run record.
-
- The boolean result indicates whether the returned record was constructed
- or not (i.e., whether the data was a duplicate submission).
- """
-
- # Construct the machine entry.
- machine,inserted = self._getOrCreateMachine(data['Machine'])
-
- # Construct the run entry.
- run,inserted = self._getOrCreateRun(data['Run'], machine)
-
- # Get the schema tag.
- tag = data['Run']['Info']['tag']
-
- # If we didn't construct a new run, this is a duplicate
- # submission. Return the prior Run.
- if not inserted:
- return False, run
-
- self._importSampleValues(data['Tests'], run, tag)
-
- # If we have a config object and we have a database which we are
- # supposed to link simple/ runs from, attempt to find the matching run
- # in that database.
- if config and config.simple_run_source:
- self.find_and_set_simple_run_id(run, data, config)
-
- return True, run
-
-
- def find_and_set_simple_run_id(self, run, data, config):
- # Get the database we are supposed to match run IDs in.
- db = config.config.get_database(config.simple_run_source)
-
- # Figure out the matching machine.
- simple_machine,created = db.getOrCreateMachine(
- data['Machine']['Name'], data['Machine']['Info'].items())
- if created:
- # Obviously missing, rollback and abort.
- db.rollback()
- return
-
- run_data = data['Run']
- simple_run,created = db.getOrCreateRun(
- simple_machine,
- run_data.get('Start Time',''), run_data.get('End Time',''),
- run_data['Info'].items())
- if created:
- # Obviously missing, rollback and abort.
- db.rollback()
- return
-
- # Otherwise, we found the run.
- run.simple_run_id = simple_run.id
-
- # Simple query support (mostly used by templates)
-
- def machines(self, name=None):
- q = self.query(self.Machine)
- if name:
- q = q.filter_by(name=name)
- return q
-
- def getMachine(self, id):
- return self.query(self.Machine).filter_by(id=id).one()
-
- def getRun(self, id):
- return self.query(self.Run).filter_by(id=id).one()
-
- def get_adjacent_runs_on_machine(self, run, N, direction = -1):
- """
- get_adjacent_runs_on_machine(run, N, direction = -1) -> [Run*]
-
- Return the N runs which have been submitted to the same machine and are
- adjacent to the given run.
-
- The actual number of runs returned may be greater than N in situations
- where multiple reports were received for the same order.
-
- The runs will be reported starting with the runs closest to the given
- run's order.
-
- The direction must be -1 or 1 and specified whether or not the
- preceeding or following runs should be returned.
- """
- assert N > 0, "invalid count"
- assert direction in (-1, 1), "invalid direction"
-
- # The obvious algorithm here is to step through the run orders in the
- # appropriate direction and yield any runs on the same machine which
- # were reported at that order.
- #
- # However, this has one large problem. In some cases, the gap between
- # orders reported on that machine may be quite high. This will be
- # particularly true when a machine has stopped reporting for a while,
- # for example, as there may be large gap between the largest reported
- # order and the last order the machine reported at.
- #
- # In such cases, we could end up executing a large number of individual
- # SA object materializations in traversing the order list, which is very
- # bad.
- #
- # We currently solve this by instead finding all the orders reported on
- # this machine, ordering those programatically, and then iterating over
- # that. This performs worse (O(N) instead of O(1)) than the obvious
- # algorithm in the common case but more uniform and significantly better
- # in the worst cast, and I prefer that response times be uniform. In
- # practice, this appears to perform fine even for quite large (~1GB,
- # ~20k runs) databases.
-
- # Find all the orders on this machine, then sort them.
- #
- # FIXME: Scalability! However, pretty fast in practice, see elaborate
- # explanation above.
- all_machine_orders = self.query(self.Order).\
- join(self.Run).\
- filter(self.Run.machine == run.machine).distinct().all()
- all_machine_orders.sort()
-
- # Find the index of the current run.
- index = all_machine_orders.index(run.order)
-
- # Gather the next N orders.
- if direction == -1:
- orders_to_return = all_machine_orders[max(0, index - N):index]
- else:
- orders_to_return = all_machine_orders[index+1:index+N]
-
- # Get all the runs for those orders on this machine in a single query.
- ids_to_fetch = [o.id
- for o in orders_to_return]
- if not ids_to_fetch:
- return []
-
- runs = self.query(self.Run).\
- filter(self.Run.machine == run.machine).\
- filter(self.Run.order_id.in_(ids_to_fetch)).all()
-
- # Sort the result by order, accounting for direction to satisfy our
- # requirement of returning the runs in adjacency order.
- #
- # Even though we already know the right order, this is faster than
- # issueing separate queries.
- runs.sort(key = lambda r: r.order, reverse = (direction==-1))
-
- return runs
-
- def get_previous_runs_on_machine(self, run, N):
- return self.get_adjacent_runs_on_machine(run, N, direction = -1)
-
- def get_next_runs_on_machine(self, run, N):
- return self.get_adjacent_runs_on_machine(run, N, direction = 1)
Removed: zorg/trunk/lnt/lnt/server/db/testsuitetypes.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/db/testsuitetypes.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/db/testsuitetypes.py (original)
+++ zorg/trunk/lnt/lnt/server/db/testsuitetypes.py (removed)
@@ -1,85 +0,0 @@
-"""
-This module maintains information on the "known" test suite types.
-
-In order to follow the existing usage model for LNT with the v0.4 design (in
-which test suites get customized databases), we support dynamically creating
-appropriate test suites on the fly for these known types.
-"""
-
-from lnt.server.db import testsuite
-
-def get_compile_testsuite(db):
- # Create a test suite compile with "lnt runtest compile".
- ts = testsuite.TestSuite("compile", "compile")
-
- # Promote some natural information to fields.
- ts.machine_fields.append(testsuite.MachineField("hardware",
- "hw.model"))
- ts.machine_fields.append(testsuite.MachineField("os_version",
- "kern.version"))
-
- # The only reliable order currently is the "run_order" field. We will want
- # to revise this over time.
- ts.order_fields.append(testsuite.OrderField("llvm_project_revision",
- "run_order", 0))
-
- # We expect up to five fields per test, each with a status field.
- for name,type_name in (('user', 'time'),
- ('sys', 'time'),
- ('wall', 'time'),
- ('size', 'bytes'),
- ('mem', 'bytes')):
- status = testsuite.SampleField(
- "%s_status" % (name,), db.status_sample_type,
- ".%s.status" % (name,))
- ts.sample_fields.append(status)
- value = testsuite.SampleField(
- "%s_%s" % (name,type_name), db.real_sample_type, ".%s" % (name,),
- status_field = status)
- ts.sample_fields.append(value)
-
- return ts
-
-def get_nts_testsuite(db):
- # Create a test suite compile with "lnt runtest nt".
- ts = testsuite.TestSuite("nts", "NT")
-
- # Promote the natural information produced by 'runtest nt' to fields.
- ts.machine_fields.append(testsuite.MachineField("hardware", "hardware"))
- ts.machine_fields.append(testsuite.MachineField("os", "os"))
-
- # The only reliable order currently is the "run_order" field. We will want
- # to revise this over time.
- ts.order_fields.append(testsuite.OrderField("llvm_project_revision",
- "run_order", 0))
-
- # We are only interested in simple runs, so we expect exactly four fields
- # per test.
- compile_status = testsuite.SampleField(
- "compile_status", db.status_sample_type, ".compile.status")
- compile_time = testsuite.SampleField(
- "compile_time", db.real_sample_type, ".compile",
- status_field = compile_status)
- exec_status = testsuite.SampleField(
- "execution_status", db.status_sample_type, ".exec.status")
- exec_time = testsuite.SampleField(
- "execution_time", db.real_sample_type, ".exec",
- status_field = exec_status)
- ts.sample_fields.append(compile_time)
- ts.sample_fields.append(compile_status)
- ts.sample_fields.append(exec_time)
- ts.sample_fields.append(exec_status)
-
- return ts
-
-_registry = {
- 'compile' : get_compile_testsuite,
- 'nts' : get_nts_testsuite,
- }
-def get_testsuite_for_type(typename, db):
- method = _registry.get(typename)
- if method:
- return method(db)
- return None
-
-__all__ = ['get_testsuite_for_type']
Removed: zorg/trunk/lnt/lnt/server/db/v4db.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/db/v4db.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/db/v4db.py (original)
+++ zorg/trunk/lnt/lnt/server/db/v4db.py (removed)
@@ -1,206 +0,0 @@
-import sqlalchemy
-
-import lnt.testing
-
-from lnt.server.db import testsuite
-from lnt.server.db import testsuitedb
-from lnt.server.db import testsuitetypes
-
-class V4DB(object):
- """
- Wrapper object for LNT v0.4+ databases.
- """
-
- class TestSuiteAccessor(object):
- def __init__(self, v4db):
- self.v4db = v4db
- self._cache = {}
-
- def __iter__(self):
- for name, in self.v4db.query(testsuite.TestSuite.name):
- yield name
-
- def get(self, name, default = None):
- # Check the test suite cache, to avoid gratuitous reinstantiation.
- #
- # FIXME: Invalidation?
- if name in self._cache:
- return self._cache[name]
-
- # Get the test suite object.
- ts = self.v4db.query(testsuite.TestSuite).\
- filter(testsuite.TestSuite.name == name).first()
- if ts is None:
- # Check to see if this is a test suite we know how to
- # dynamically instantiate.
- #
- # FIXME: For now, we assume the typename matches the test suite
- # name. It would be nice to allow tests to report the typename.
- ts = testsuitetypes.get_testsuite_for_type(name, self.v4db)
- if ts is not None:
- self.v4db.add(ts)
- # FIXME: I'm not really sure why we need to commit here. It
- # may be an SA bug. I think we should just be able to flush
- # but then there is an issue when the tables will get
- # realized by the TestSuiteDB constructor below.
- #
- # FIXME: This commit makes me a bit nervous because clients
- # most likely won't expect us to be
- # maybe-commit'ing. However, this is unlikely to be a
- # problem in practice.
- self.v4db.commit()
- else:
- # Otherwise, return the default value.
- return default
-
- # Instantiate the per-test suite wrapper object for this test suite.
- self._cache[name] = ts = testsuitedb.TestSuiteDB(
- self.v4db, name, ts)
- return ts
-
- def __getitem__(self, name):
- ts = self.get(name)
- if ts is None:
- raise IndexError(name)
- return ts
-
- def keys(self):
- return iter(self)
-
- def values(self):
- for name in self:
- yield self[name]
-
- def items(self):
- for name in self:
- yield name,self[name]
-
- def __init__(self, path, echo=False):
- # If the path includes no database type, assume sqlite.
- #
- # FIXME: I would like to phase this out and force clients to propagate
- # paths, but it isn't a big deal.
- if not path.startswith('mysql://') and not path.startswith('sqlite://'):
- path = 'sqlite:///' + path
-
- self.path = path
- self.engine = sqlalchemy.create_engine(path, echo=echo)
-
- # Proxy object for implementing dict-like .testsuite property.
- self._testsuite_proxy = None
-
- # Create the common tables in case this is a new database.
- testsuite.Base.metadata.create_all(self.engine)
-
- self.session = sqlalchemy.orm.sessionmaker(self.engine)()
-
- # Add several shortcut aliases.
- self.add = self.session.add
- self.commit = self.session.commit
- self.query = self.session.query
- self.rollback = self.session.rollback
-
- # For parity with the usage of TestSuiteDB, we make our primary model
- # classes available as instance variables.
- self.SampleType = testsuite.SampleType
- self.StatusKind = testsuite.StatusKind
- self.TestSuite = testsuite.TestSuite
-
- # Resolve or create the known status kinds.
- self.pass_status_kind = self.query(testsuite.StatusKind)\
- .filter_by(id = lnt.testing.PASS).first()
- if self.pass_status_kind is None:
- self.pass_status_kind = testsuite.StatusKind(lnt.testing.PASS,
- "PASS")
- self.add(self.pass_status_kind)
- self.fail_status_kind = self.query(testsuite.StatusKind)\
- .filter_by(id = lnt.testing.FAIL).first()
- if self.fail_status_kind is None:
- self.fail_status_kind = testsuite.StatusKind(lnt.testing.FAIL,
- "FAIL")
- self.add(self.fail_status_kind)
- self.xfail_status_kind = self.query(testsuite.StatusKind)\
- .filter_by(id = lnt.testing.XFAIL).first()
- if self.xfail_status_kind is None:
- self.xfail_status_kind = testsuite.StatusKind(lnt.testing.XFAIL,
- "XFAIL")
- self.add(self.xfail_status_kind)
-
- # Resolve or create the known sample types.
- self.real_sample_type = self.query(testsuite.SampleType)\
- .filter_by(name = "Real").first()
- if self.real_sample_type is None:
- self.real_sample_type = testsuite.SampleType("Real")
- self.add(self.real_sample_type)
- self.status_sample_type = self.query(testsuite.SampleType)\
- .filter_by(name = "Status").first()
- if self.status_sample_type is None:
- self.status_sample_type = testsuite.SampleType("Status")
- self.add(self.status_sample_type)
-
- @property
- def testsuite(self):
- # This is the start of "magic" part of V4DB, which allows us to get
- # fully bound SA instances for databases which are effectively described
- # by the TestSuites table.
-
- # The magic starts by returning a object which will allow us to use
- # dictionary like access to get the per-test suite database wrapper.
- if self._testsuite_proxy is None:
- self._testsuite_proxy = V4DB.TestSuiteAccessor(self)
- return self._testsuite_proxy
-
- # FIXME: The getNum...() methods below should be phased out once we can
- # eliminate the v0.3 style databases.
- def getNumMachines(self):
- return sum([ts.query(ts.Machine).count()
- for ts in self.testsuite.values()])
- def getNumRuns(self):
- return sum([ts.query(ts.Run).count()
- for ts in self.testsuite.values()])
- def getNumSamples(self):
- return sum([ts.query(ts.Sample).count()
- for ts in self.testsuite.values()])
- def getNumTests(self):
- return sum([ts.query(ts.Test).count()
- for ts in self.testsuite.values()])
-
- def importDataFromDict(self, data, config=None):
- # Select the database to import into.
- #
- # FIXME: Promote this to a top-level field in the data.
- db_name = data['Run']['Info'].get('tag')
- if db_name is None:
- raise ValueError,"unknown database target (no tag field)"
-
- db = self.testsuite.get(db_name)
- if db is None:
- raise ValueError,"test suite %r not present in this database!" % (
- db_name)
-
- return db.importDataFromDict(data, config)
-
- def get_db_summary(self):
- return V4DBSummary(self)
-
-class V4DBSummary(object):
- class SuiteSummary(object):
- def __init__(self, name, path):
- self.name = name
- self.path = path
-
- def __init__(self, db):
- self.db = db
- # Load all the test suite names now so that we don't attempt to reuse a
- # cursor later.
- #
- # FIXME: Really, we just need to eliminate this object.
- self.testsuites = list(self.db.testsuite)
-
- @property
- def suites(self):
- for name in self.testsuites:
- yield V4DBSummary.SuiteSummary(name, ("v4", name))
-
- def is_up_to_date(self, db):
- return True
Removed: zorg/trunk/lnt/lnt/server/reporting/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/reporting/__init__.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/reporting/__init__.py (original)
+++ zorg/trunk/lnt/lnt/server/reporting/__init__.py (removed)
@@ -1 +0,0 @@
-__all__ = []
Removed: zorg/trunk/lnt/lnt/server/reporting/analysis.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/reporting/analysis.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/reporting/analysis.py (original)
+++ zorg/trunk/lnt/lnt/server/reporting/analysis.py (removed)
@@ -1,139 +0,0 @@
-"""
-Utilities for helping with the analysis of data, for reporting purposes.
-"""
-
-from lnt.util import stats
-from lnt.server.ui import util
-from lnt.db.runinfo import ComparisonResult
-from lnt.testing import PASS, FAIL, XFAIL
-
-class RunInfo(object):
- def __init__(self, testsuite, runs_to_load):
- self.testsuite = testsuite
-
- self.sample_map = util.multidict()
- self.loaded_run_ids = set()
-
- self._load_samples_for_runs(runs_to_load)
-
- def get_run_comparison_result(self, run, compare_to, test_id, field,
- comparison_window=[]):
- # Get the field which indicates the requested field's status.
- status_field = field.status_field
-
- # Load the sample data for the current and previous runs and the
- # comparison window.
- if compare_to is None:
- compare_id = None
- else:
- compare_id = compare_to.id
-
- # Lookup the current and previous samples.
- run_samples = self.sample_map.get((run.id, test_id), ())
- prev_samples = self.sample_map.get((compare_id, test_id), ())
-
- # Determine whether this (test,pset) passed or failed in the current and
- # previous runs.
- #
- # FIXME: Support XFAILs and non-determinism (mixed fail and pass)
- # better.
- run_failed = prev_failed = False
- if status_field:
- for sample in run_samples:
- run_failed |= sample[status_field.index] == FAIL
- for sample in prev_samples:
- prev_failed |= sample[status_field.index] == FAIL
-
- # Get the current and previous values.
- run_values = [s[field.index] for s in run_samples
- if s[field.index] is not None]
- prev_values = [s[field.index] for s in prev_samples
- if s[field.index] is not None]
- if run_values:
- run_value = min(run_values)
- else:
- run_value = None
- if prev_values:
- prev_value = min(prev_values)
- else:
- prev_value = None
-
- # If we have multiple values for this run, use that to estimate the
- # distribution.
- if run_values and len(run_values) > 1:
- stddev = stats.standard_deviation(run_values)
- MAD = stats.median_absolute_deviation(run_values)
- stddev_mean = stats.mean(run_values)
- stddev_is_estimated = False
- else:
- stddev = None
- MAD = None
- stddev_mean = None
- stddev_is_estimated = False
-
- # If we are missing current or comparison values we are done.
- if run_value is None or prev_value is None:
- return ComparisonResult(
- run_value, prev_value, delta=None,
- pct_delta = None, stddev = stddev, MAD = MAD,
- cur_failed = run_failed, prev_failed = prev_failed,
- samples = run_values)
-
- # Compute the comparison status for the test value.
- delta = run_value - prev_value
- if prev_value != 0:
- pct_delta = delta / prev_value
- else:
- pct_delta = 0.0
-
- # If we don't have an estimate for the distribution, attempt to "guess"
- # it using the comparison window.
- #
- # FIXME: We can substantially improve the algorithm for guessing the
- # noise level from a list of values. Probably better to just find a way
- # to kill this code though.
- if stddev is None:
- # Get all previous values in the comparison window.
- prev_samples = [s for run in comparison_window
- for s in self.sample_map.get((run.id, test_id), ())
- if s[field.index] is not None]
- # Filter out failing samples.
- if status_field:
- prev_samples = [s for s in prev_samples
- if s[status_field.index] != FAIL]
- if prev_samples:
- prev_values = [s[field.index]
- for s in prev_samples]
- stddev = stats.standard_deviation(prev_values)
- MAD = stats.median_absolute_deviation(prev_values)
- stddev_mean = stats.mean(prev_values)
- stddev_is_estimated = True
-
- return ComparisonResult(run_value, prev_value, delta,
- pct_delta, stddev, MAD,
- run_failed, prev_failed, run_values,
- stddev_mean, stddev_is_estimated)
-
- def _load_samples_for_runs(self, run_ids):
- # Find the set of new runs to load.
- to_load = set(run_ids) - self.loaded_run_ids
- if not to_load:
- return
-
- # Batch load all of the samples for the needed runs.
- #
- # We speed things up considerably by loading the column data directly
- # here instead of requiring SA to materialize Sample objects.
- columns = [self.testsuite.Sample.run_id,
- self.testsuite.Sample.test_id]
- columns.extend(f.column for f in self.testsuite.sample_fields)
- q = self.testsuite.query(*columns)
- q = q.filter(self.testsuite.Sample.run_id.in_(to_load))
- for data in q:
- run_id = data[0]
- test_id = data[1]
- sample_values = data[2:]
- self.sample_map[(run_id, test_id)] = sample_values
-
- self.loaded_run_ids |= to_load
-
Removed: zorg/trunk/lnt/lnt/server/reporting/runs.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/reporting/runs.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/reporting/runs.py (original)
+++ zorg/trunk/lnt/lnt/server/reporting/runs.py (removed)
@@ -1,511 +0,0 @@
-"""
-Report functionality centered around individual runs.
-"""
-
-import StringIO
-import os
-import time
-import urllib
-
-import lnt.server.reporting.analysis
-import lnt.server.ui.util
-from lnt.db import runinfo
-
-def generate_run_report(run, baseurl, only_html_body = False,
- num_comparison_runs = 10, result = None,
- compare_to = None, baseline = None,
- comparison_window = None):
- """
- generate_run_report(...) -> (str: subject, str: text_report,
- str: html_report)
-
- Generate a comprehensive report on the results of the given individual
- run, suitable for emailing or presentation on a web page.
- """
-
- assert num_comparison_runs > 0
-
- start_time = time.time()
-
- ts = run.testsuite
- machine = run.machine
- machine_parameters = machine.parameters
-
- # If no baseline was given, find one close to the requested baseline run
- # order.
- if baseline is None:
- # Find the closest order to the requested baseline order, for which this
- # machine also reported.
- #
- # FIXME: Scalability! Pretty fast in practice, but still pretty lame.
- order_to_find = ts.Order(llvm_project_revision = '% 7d' % 144168)
- best = None
- for order in ts.query(ts.Order).\
- join(ts.Run).\
- filter(ts.Run.machine == machine).distinct():
- if order >= order_to_find and (best is None or order < best):
- best = order
-
- # Find the most recent run on this machine that used that order.
- if best:
- baseline = ts.query(ts.Run).\
- filter(ts.Run.machine == run.machine).\
- filter(ts.Run.order == best).\
- order_by(ts.Run.start_time.desc()).first()
-
- # Gather the runs to use for statistical data.
- if comparison_window is None:
- comparison_start_run = compare_to or run
- comparison_window = list(ts.get_previous_runs_on_machine(
- comparison_start_run, num_comparison_runs))
- if baseline:
- baseline_window = list(ts.get_previous_runs_on_machine(
- baseline, num_comparison_runs))
- else:
- baseline_window = []
-
- # If we don't have an explicit baseline run or a comparison run, use the
- # previous run.
- if compare_to is None and comparison_window:
- compare_to = comparison_window[0]
-
- # Create the run info analysis object.
- runs_to_load = set(r.id for r in comparison_window)
- for r in baseline_window:
- runs_to_load.add(r.id)
- runs_to_load.add(run.id)
- if compare_to:
- runs_to_load.add(compare_to.id)
- if baseline:
- runs_to_load.add(baseline.id)
- sri = lnt.server.reporting.analysis.RunInfo(ts, runs_to_load)
-
- # Get the test names, primary fields and total test counts.
- test_names = ts.query(ts.Test.name, ts.Test.id).order_by(ts.Test.name).all()
- primary_fields = list(ts.Sample.get_primary_fields())
- num_total_tests = len(primary_fields) * len(test_names)
-
- # Gather the run-over-run changes to report, organized by field and then
- # collated by change type.
- run_to_run_info,test_results = _get_changes_by_type(
- run, compare_to, primary_fields, test_names, comparison_window, sri)
-
- # If we have a baseline, gather the run-over-baseline results and
- # changes.
- if baseline:
- run_to_baseline_info,baselined_results = _get_changes_by_type(
- run, baseline, primary_fields, test_names, baseline_window, sri)
- else:
- run_to_baseline_info = baselined_results = None
-
- # Gather the run-over-run changes to report.
-
- # Collect the simplified results, if desired, for sending back to clients.
- if result is not None:
- pset_results = []
- result['test_results'] = [{ 'pset' : (), 'results' : pset_results}]
- for field,field_results in test_results:
- for _,bucket,_ in field_results:
- for name,cr,_ in bucket:
- # FIXME: Include additional information about performance
- # changes.
- pset_results.append(("%s.%s" % (name, field.name),
- cr.get_test_status(),
- cr.get_value_status()))
-
- # Begin report generation...
- subject = """%s test results""" % (machine.name,)
- report = StringIO.StringIO()
- html_report = StringIO.StringIO()
-
- # Generate the report header.
- if baseurl[-1] == '/':
- baseurl = baseurl[:-1]
-
- ts_url = """%s/v4/%s""" % (baseurl, ts.name)
- run_url = """%s/%d""" % (ts_url, run.id)
- report_url = run_url
- url_fields = []
- if compare_to:
- url_fields.append(('compare_to', str(compare_to.id)))
- if baseline:
- url_fields.append(('baseline', str(baseline.id)))
- report_url = "%s?%s" % (run_url, "&".join("%s=%s" % (k,v)
- for k,v in url_fields))
- print >>report, report_url
- print >>report, """Nickname: %s:%d""" % (machine.name, machine.id)
- if 'name' in machine_parameters:
- print >>report, """Name: %s""" % (machine_parameters['name'],)
- print >>report, "Comparing:"
- # FIXME: Remove hard coded field use here.
- print >>report, " Run: %d, Order: %s, Start Time: %s, End Time: %s" % (
- run.id, run.order.llvm_project_revision, run.start_time, run.end_time)
- if compare_to:
- # FIXME: Remove hard coded field use here.
- print >>report, (" To: %d, Order: %s, "
- "Start Time: %s, End Time: %s") % (
- compare_to.id, compare_to.order.llvm_project_revision,
- compare_to.start_time, compare_to.end_time)
- if run.machine != compare_to.machine:
- print >>report, """*** WARNING ***:""",
- print >>report, """comparison is against a different machine""",
- print >>report, """(%s:%d)""" % (compare_to.machine.name,
- compare_to.machine.id)
- else:
- print >>report, " To: (none)"
- if baseline:
- # FIXME: Remove hard coded field use here.
- print >>report, ("Baseline: %d, Order: %s, "
- "Start Time: %s, End Time: %s") % (
- baseline.id, baseline.order.llvm_project_revision,
- baseline.start_time, baseline.end_time)
- print >>report
-
- # Compute static CSS styles for elemenets. We use the style directly on
- # elements instead of via a stylesheet to support major email clients (like
- # Gmail) which can't deal with embedded style sheets.
- #
- # These are derived from the static style.css file we use elsewhere.
- styles = {
- "body" : ("color:#000000; background-color:#ffffff; "
- "font-family: Helvetica, sans-serif; font-size:9pt"),
- "h1" : ("font-size: 14pt"),
- "table" : "font-size:9pt; border-spacing: 0px; border: 1px solid black",
- "th" : (
- "background-color:#eee; color:#666666; font-weight: bold; "
- "cursor: default; text-align:center; font-weight: bold; "
- "font-family: Verdana; padding:5px; padding-left:8px"),
- "td" : "padding:5px; padding-left:8px",
- }
-
- # Generate the HTML report header.
- print >>html_report, """<h1 style="%s"><a href="%s">%s</a></h1>""" % (
- styles['h1'], report_url, subject)
- print >>html_report, """\
-<p>
-<table style="%s">
-<thead>
- <tr>
- <th style="%s">Run</th>
- <th style="%s">Order</th>
- <th style="%s">Start Time</th>
- <th style="%s">Duration</th>
- </tr>
-</thead>""" % (styles['table'],
- styles['th'], styles['th'], styles['th'], styles['th'])
- for (title, r) in (('Current', run),
- ('Previous', compare_to),
- ('Baseline', baseline)):
- if r is None:
- print >>html_report, """\
-<tr><td style="%s" colspan=4>No %s Run</td></tr>""" % (
- styles['td'], title,)
- continue
-
- # FIXME: Remove hard coded field use here.
- print >>html_report, """\
-<tr><td style="%s"><a href="%s/%d">%s</a></td>\
-<td style="%s"><a href="%s/order/%d">%s</a></td>\
-<td style="%s">%s</td>\
-<td style="%s">%s</td></tr>""" % (
- styles['td'], ts_url, r.id, title,
- styles['td'], ts_url, r.order.id, r.order.llvm_project_revision,
- styles['td'], r.start_time,
- styles['td'], r.end_time - r.start_time)
- print >>html_report, """</table>"""
- if compare_to and run.machine != compare_to.machine:
- print >>html_report, """<p><b>*** WARNING ***:""",
- print >>html_report, """comparison is against a different machine""",
- print >>html_report, """(%s:%d)</b></p>""" % (compare_to.machine.name,
- compare_to.machine.id)
- if baseline and run.machine != baseline.machine:
- print >>html_report, """<p><b>*** WARNING ***:""",
- print >>html_report, """baseline is against a different machine""",
- print >>html_report, """(%s:%d)</b></p>""" % (baseline.machine.name,
- baseline.machine.id)
-
- # Generate the summary of the changes.
- num_total_changes = sum(len(bucket)
- for _,field_results in test_results
- for name,bucket,_ in field_results
- if name != 'Unchanged Tests')
-
- print >>report, """==============="""
- print >>report, """Tests Summary"""
- print >>report, """==============="""
- print >>report
- print >>html_report, """
-<hr>
-<h3>Tests Summary</h3>
-<table style="%s">
-<thead>
- <tr>
- <th style="%s">Status Group</th>
- <th style="%s" align="right">#</th>""" % (
- styles['table'], styles['th'], styles['th'])
- if baseline:
- print >>html_report, """<th style="%s" align="right"># (B)</th>""" % (
- styles['th'],)
- print >>html_report, """</tr></thead> """
- # For now, we aggregate across all bucket types for reports.
- for i,(name,_,_) in enumerate(test_results[0][1]):
- num_items = sum(len(field_results[i][1])
- for _,field_results in test_results)
- if baseline:
- num_items_vs_baseline = sum(
- len(field_results[i][1])
- for _,field_results in baselined_results)
- else:
- num_items_vs_baseline = None
- if num_items or num_items_vs_baseline:
- if baseline:
- print >>report, '%s: %d (%d on baseline)' % (
- name, num_items, num_items_vs_baseline)
- else:
- print >>report, '%s: %d' % (name, num_items)
- print >>html_report, """
-<tr><td style="%s">%s</td><td style="%s" align="right">%d</td>""" % (
- styles['td'], name, styles['td'], num_items)
- if baseline:
- print >>html_report, """\
-<td style="%s" align="right">%d</td>""" % (
- styles['td'], num_items_vs_baseline)
- print >>html_report, """</tr>"""
- print >>report, """Total Tests: %d""" % num_total_tests
- print >>report
- print >>html_report, """
-<tfoot>
- <tr>\
-<td style="%s"><b>Total Tests</b></td>\
-<td style="%s" align="right"><b>%d</b></td>""" % (
- styles['td'], styles['td'], num_total_tests)
- if baseline:
- print >>html_report, """\
-<td style="%s" align="right"><b>%d</b></td>""" % (
- styles['td'], num_total_tests,)
- print >>html_report, """</tr>
-</tfoot>
-</table>
-"""
-
- # Add the run-over-run changes detail (if any were present).
- print >>report, """==========================="""
- print >>report, """Run-Over-Run Changes Detail"""
- print >>report, """==========================="""
- print >>html_report, """
-<p>
-<h3>Run-Over-Run Changes Detail</h3>"""
-
- _add_report_changes_detail(ts, test_results, report,
- html_report, run_url,
- run_to_baseline_info,
- 'Previous', '', ' (B)',
- styles)
-
- # Add the run-over-baseline changes detail.
- if baseline:
- print >>report, """================================"""
- print >>report, """Run-Over-Baseline Changes Detail"""
- print >>report, """================================"""
- print >>html_report, """
-<p>
-<h3>Run-Over-Baseline Changes Detail</h3>"""
-
- _add_report_changes_detail(ts, baselined_results, report,
- html_report, run_url,
- run_to_run_info,
- 'Baseline', '(B)', '',
- styles)
-
- report_time = time.time() - start_time
- print >>report, "Report Time: %.2fs" % (report_time,)
- print >>html_report, """
-<hr>
-<b>Report Time</b>: %.2fs""" % (report_time,)
-
- # Finish up the HTML report (wrapping the body, if necessary).
- html_report = html_report.getvalue()
- if not only_html_body:
- # We embed the additional resources, so that the message is self
- # contained.
- html_report = """\
-<html>
- <head>
- <title>%s</title>
- </head>
- <body style="%s">
-%s
- </body>
-</html>""" % (subject, styles['body'], html_report)
-
- return subject, report.getvalue(), html_report, sri
-
-def _get_changes_by_type(run_a, run_b, primary_fields, test_names,
- comparison_window, sri):
- comparison_results = {}
- results_by_type = []
- for field in primary_fields:
- new_failures = []
- new_passes = []
- perf_regressions = []
- perf_improvements = []
- removed_tests = []
- added_tests = []
- existing_failures = []
- unchanged_tests = []
- for name,test_id in test_names:
- cr = sri.get_run_comparison_result(run_a, run_b, test_id, field,
- comparison_window)
- comparison_results[(name,field)] = cr
- test_status = cr.get_test_status()
- perf_status = cr.get_value_status()
- if test_status == runinfo.REGRESSED:
- bucket = new_failures
- elif test_status == runinfo.IMPROVED:
- bucket = new_passes
- elif cr.current is None and cr.previous is not None:
- bucket = removed_tests
- elif cr.current is not None and cr.previous is None:
- bucket = added_tests
- elif test_status == runinfo.UNCHANGED_FAIL:
- bucket = existing_failures
- elif perf_status == runinfo.REGRESSED:
- bucket = perf_regressions
- elif perf_status == runinfo.IMPROVED:
- bucket = perf_improvements
- else:
- bucket = unchanged_tests
-
- bucket.append((name, cr, test_id))
-
- results_by_type.append(
- (field, (('New Failures', new_failures, False),
- ('New Passes', new_passes, False),
- ('Performance Regressions', perf_regressions, True),
- ('Performance Improvements', perf_improvements, True),
- ('Removed Tests', removed_tests, False),
- ('Added Tests', added_tests, False),
- ('Existing Failures', existing_failures, False),
- ('Unchanged Tests', unchanged_tests, False))))
- return comparison_results, results_by_type
-
-def _add_report_changes_detail(ts, test_results, report, html_report,
- run_url, run_to_baseline_info,
- primary_name, primary_field_suffix,
- secondary_field_suffix,
- styles):
- # Reorder results to present by most important bucket first.
- prioritized = [(priority, field, bucket_name, bucket, show_perf)
- for field,field_results in test_results
- for priority,(bucket_name, bucket,
- show_perf) in enumerate(field_results)]
- prioritized.sort(key = lambda item: (item[0], item[1].name))
-
- for _,field,bucket_name,bucket,show_perf in prioritized:
- _add_report_changes_detail_for_field_and_bucket(
- ts, field, bucket_name, bucket, show_perf, report,
- html_report, run_url, run_to_baseline_info,
- primary_name, primary_field_suffix, secondary_field_suffix,
- styles)
-
-def _add_report_changes_detail_for_field_and_bucket(
- ts, field, bucket_name, bucket, show_perf, report,
- html_report, run_url, secondary_info,
- primary_name, primary_field_suffix, secondary_field_suffix,
- styles):
- if not bucket or bucket_name == 'Unchanged Tests':
- return
-
- field_index = ts.sample_fields.index(field)
- # FIXME: Do not hard code field display names here, this should be in the
- # test suite metadata.
- field_display_name = { "compile_time" : "Compile Time",
- "execution_time" : "Execution Time" }.get(
- field.name, field.name)
-
- print >>report, "%s - %s" % (bucket_name, field_display_name)
- print >>report, '-' * (len(bucket_name) + len(field_display_name) + 3)
- print >>html_report, """
-<p>
-<table style="%s" class="sortable">
-<tr><th style="%s", width="500">%s - %s </th>""" % (
- styles['table'], styles['th'], bucket_name, field_display_name)
- if show_perf:
- print >>html_report, """\
-<th style="%s">Δ%s</th>\
-<th style="%s">%s</th>\
-<th style="%s">Current</th>\
-<th style="%s">σ%s</th>""" % (
- styles['th'], primary_field_suffix,
- styles['th'], primary_name,
- styles['th'], styles['th'], primary_field_suffix)
- if secondary_info:
- print >>html_report, """<th style="%s">Δ%s</th>""" % (
- styles['th'], secondary_field_suffix,)
- print >>html_report, """<th style="%s">σ%s</th>""" % (
- styles['th'], secondary_field_suffix,)
- print >>html_report, """</tr>"""
-
- # If we aren't displaying any performance results, just write out the
- # list of tests and continue.
- if not show_perf:
- for name,cr,_ in bucket:
- print >>report, ' %s' % (name,)
- print >>html_report, """
-<tr><td style="%s">%s</td></tr>""" % (styles['td'], name,)
- print >>report
- print >>html_report, """
-</table>"""
- return
-
- bucket.sort(key = lambda (_,cr,__): -abs(cr.pct_delta))
-
- for name,cr,test_id in bucket:
- if cr.stddev is not None:
- stddev_value = ', std. dev.: %.4f' % cr.stddev
- else:
- stddev_value = ''
- print >>report, (' %s: %.2f%% (%.4f => %.4f%s)') % (
- name, 100. * cr.pct_delta,
- cr.previous, cr.current, stddev_value)
-
- # Link the regression to the chart of its performance.
- form_data = urllib.urlencode([('test.%d' % test_id,
- str(field_index))])
- linked_name = '<a href="%s?%s">%s</a>' % (
- os.path.join(run_url, "graph"),
- form_data, name)
-
- pct_value = lnt.server.ui.util.PctCell(cr.pct_delta).render(
- style=styles['td'])
- if cr.stddev is not None:
- stddev_value = "%.4f" % cr.stddev
- else:
- stddev_value = "-"
-
- if secondary_info:
- a_cr = secondary_info[(name,field)]
- if a_cr.stddev is not None:
- a_stddev_value = "%.4f" % a_cr.stddev
- else:
- a_stddev_value = "-"
- baseline_info = """%s<td style="%s">%s</td>""" % (
- lnt.server.ui.util.PctCell(a_cr.pct_delta).render(
- style=styles['td']),
- styles['td'], a_stddev_value)
- else:
- baseline_info = ""
- print >>html_report, """\
-<tr>\
-<td style="%s">%s</td>%s\
-<td style="%s">%.4f</td>\
-<td style="%s">%.4f</td>\
-<td style="%s">%s</td>%s</tr>""" %(
- styles['td'], linked_name, pct_value,
- styles['td'], cr.previous,
- styles['td'], cr.current,
- styles['td'], stddev_value,
- baseline_info)
- print >>report
- print >>html_report, """
-</table>"""
Removed: zorg/trunk/lnt/lnt/server/ui/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/__init__.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/__init__.py (original)
+++ zorg/trunk/lnt/lnt/server/ui/__init__.py (removed)
@@ -1 +0,0 @@
-__all__ = []
Removed: zorg/trunk/lnt/lnt/server/ui/app.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/app.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/app.py (original)
+++ zorg/trunk/lnt/lnt/server/ui/app.py (removed)
@@ -1,132 +0,0 @@
-import jinja2
-import logging
-import logging.handlers
-import os
-import time
-
-import flask
-from flask import current_app
-from flask import g
-from flask import url_for
-
-import lnt
-import lnt.server.config
-import lnt.server.ui.filters
-import lnt.server.ui.globals
-import lnt.server.ui.views
-import lnt.server.db.v4db
-
-from lnt.db import perfdbsummary
-from lnt.db import perfdb
-
-class RootSlashPatchMiddleware(object):
- def __init__(self, app):
- self.app = app
-
- def __call__(self, environ, start_response):
- if environ['PATH_INFO'] == '':
- return flask.redirect(environ['SCRIPT_NAME'] + '/')(
- environ, start_response)
- return self.app(environ, start_response)
-
-class Request(flask.Request):
- def __init__(self, *args, **kwargs):
- super(Request, self).__init__(*args, **kwargs)
-
- self.request_time = time.time()
- self.db = None
- self.db_summary = None
- self.testsuite = None
-
- def elapsed_time(self):
- return time.time() - self.request_time
-
- # Utility Methods
-
- def get_db(self):
- if self.db is None:
- echo = bool(self.args.get('db_log') or self.form.get('db_log'))
-
- self.db = current_app.old_config.get_database(g.db_name, echo=echo)
-
- # Enable SQL logging with db_log.
- #
- # FIXME: Conditionalize on an is_production variable.
- if echo:
- import logging, StringIO
- g.db_log = StringIO.StringIO()
- logger = logging.getLogger("sqlalchemy")
- logger.addHandler(logging.StreamHandler(g.db_log))
-
- return self.db
-
- def get_testsuite(self):
- if self.testsuite is None:
- testsuites = self.get_db().testsuite
- if g.testsuite_name not in testsuites:
- flask.abort(404)
-
- self.testsuite = testsuites[g.testsuite_name]
-
- return self.testsuite
-
- def get_db_summary(self):
- return current_app.get_db_summary(g.db_name, self.get_db())
-
-class App(flask.Flask):
- @staticmethod
- def create_standalone(config_path):
- # Construct the application.
- app = App(__name__)
-
- # Register additional filters.
- lnt.server.ui.filters.register(app)
-
- # Set up strict undefined mode for templates.
- app.jinja_env.undefined = jinja2.StrictUndefined
-
- # Load the application configuration.
- app.load_config(config_path)
-
- # Load the application routes.
- app.register_module(lnt.server.ui.views.frontend)
-
- return app
-
- def __init__(self, name):
- super(App, self).__init__(name)
- self.start_time = time.time()
- self.db_summaries = {}
-
- # Override the request class.
- self.request_class = Request
-
- # Store a few global things we want available to templates.
- self.version = lnt.__version__
-
- # Inject a fix for missing slashes on the root URL (see Flask issue
- # #169).
- self.wsgi_app = RootSlashPatchMiddleware(self.wsgi_app)
-
- def load_config(self, config_path):
- config_data = {}
- exec open(config_path) in config_data
-
- self.old_config = lnt.server.config.Config.fromData(
- config_path, config_data)
-
- self.jinja_env.globals.update(
- app=current_app,
- perfdb=perfdb,
- old_config=self.old_config)
-
- lnt.server.ui.globals.register(self)
-
- def get_db_summary(self, db_name, db):
- # FIXME/v3removal: Eliminate this, V4DB style has no need for summary
- # abstraction.
- db_summary = self.db_summaries.get(db_name)
- if db_summary is None or not db_summary.is_up_to_date(db):
- self.db_summaries[db_name] = db_summary = db.get_db_summary()
- return db_summary
-
Removed: zorg/trunk/lnt/lnt/server/ui/filters.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/filters.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/filters.py (original)
+++ zorg/trunk/lnt/lnt/server/ui/filters.py (removed)
@@ -1,16 +0,0 @@
-import datetime
-from lnt.server.ui import util
-
-def filter_asusertime(time):
- # FIXME: Support alternate timezones?
- ts = datetime.datetime.fromtimestamp(time)
- return ts.strftime('%Y-%m-%d %H:%M:%S %Z PST')
-
-def filter_aspctcell(value, *args, **kwargs):
- cell = util.PctCell(value, *args, **kwargs)
- return cell.render()
-
-def register(app):
- for name,object in globals().items():
- if name.startswith('filter_'):
- app.jinja_env.filters[name[7:]] = object
Removed: zorg/trunk/lnt/lnt/server/ui/globals.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/globals.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/globals.py (original)
+++ zorg/trunk/lnt/lnt/server/ui/globals.py (removed)
@@ -1,24 +0,0 @@
-"""
-Module for defining additional Jinja global functions.
-"""
-
-import flask
-
-def db_url_for(*args, **kwargs):
- """
- Like url_for, but handles automatically providing the db_name argument.
- """
- return flask.url_for(*args, db_name=flask.g.db_name, **kwargs)
-
-def v4_url_for(*args, **kwargs):
- """
- Like url_for, but handles automatically providing the db_name and
- testsuite_name arguments.
- """
- return flask.url_for(*args, db_name=flask.g.db_name,
- testsuite_name=flask.g.testsuite_name, **kwargs)
-
-def register(app):
- app.jinja_env.globals.update(
- db_url_for=db_url_for,
- v4_url_for=v4_url_for)
Removed: zorg/trunk/lnt/lnt/server/ui/graphutil.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/graphutil.py?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/graphutil.py (original)
+++ zorg/trunk/lnt/lnt/server/ui/graphutil.py (removed)
@@ -1,131 +0,0 @@
-"""
-Helper functions for graphing test results.
-"""
-
-from lnt.server.ui import util
-from lnt.util import stats
-from lnt.external.stats import stats as ext_stats
-
-from lnt.db.perfdb import Machine, Run, RunInfo, Sample, Test
-
-def get_test_plots(db, machine, test_ids, run_summary, ts_summary,
- show_mad_error = False, show_points = False,
- show_all_points = False, show_stddev = False,
- show_linear_regression = False):
- # Load all the samples for these tests and this machine.
- q = db.session.query(Sample.run_id,Sample.test_id,
- Sample.value).join(Run)
- q = q.filter(Run.machine_id == machine.id)
- q = q.filter(Sample.test_id.in_(test_ids))
- samples = list(q)
-
- # Aggregate by test id and then run key.
- #
- # FIXME: Pretty expensive.
- samples_by_test_id = {}
- for run_id,test_id,value in samples:
- d = samples_by_test_id.get(test_id)
- if d is None:
- d = samples_by_test_id[test_id] = util.multidict()
- run_key = run_summary.get_run_order(run_id)
- if run_key is None:
- continue
-
- # FIXME: What to do on failure?
- run_key = int(run_key)
- d[run_key] = value
-
- # Build the graph data
- pset_id_map = dict([(pset,i)
- for i,pset in enumerate(ts_summary.parameter_sets)])
- num_plots = len(test_ids)
- for index,test_id in enumerate(test_ids):
- test = db.getTest(test_id)
- pset = test.get_parameter_set()
- name = test.name
-
- # Get the plot for this test.
- #
- # FIXME: Support order by something other than time.
- errorbar_data = []
- points_data = []
- data = []
- points = []
- for x,values in samples_by_test_id.get(test_id,{}).items():
- min_value = min(values)
- data.append((x, min_value))
- if show_points:
- if show_all_points:
- for v in values:
- points_data.append((x, v))
- else:
- points_data.append((x, min_value))
- if show_stddev:
- mean = stats.mean(values)
- sigma = stats.standard_deviation(values)
- errorbar_data.append((x, mean - sigma, mean + sigma))
- if show_mad_error:
- med = stats.median(values)
- mad = stats.median_absolute_deviation(values, med)
- errorbar_data.append((x, med - mad, med + mad))
- points.append((x, min_value, mad, med))
- data.sort()
- points.sort()
-
- plot_js = ""
-
- # Determine the base plot color.
- col = list(util.makeDarkColor(float(index) / num_plots))
-
- # Add regression line, if requested.
- if show_linear_regression:
- xs = [t for t,v in data]
- ys = [v for t,v in data]
-
- # We compute the regression line in terms of a normalized X scale.
- x_min, x_max = min(xs), max(xs)
- try:
- norm_xs = [(x - x_min) / (x_max - x_min)
- for x in xs]
- except ZeroDivisionError:
- norm_xs = xs
-
- try:
- info = ext_stats.linregress(norm_xs, ys)
- except ZeroDivisionError:
- info = None
- except ValueError:
- info = None
-
- if info is not None:
- slope, intercept,_,_,_ = info
-
- reglin_col = [c*.5 for c in col]
- pts = ','.join('[%.4f,%.4f]' % pt
- for pt in [(x_min, 0.0 * slope + intercept),
- (x_max, 1.0 * slope + intercept)])
- style = "new Graph2D_LinePlotStyle(4, %r)" % ([.7, .7, .7],)
- plot_js += " graph.addPlot([%s], %s);\n" % (pts,style)
- style = "new Graph2D_LinePlotStyle(2, %r)" % (reglin_col,)
- plot_js += " graph.addPlot([%s], %s);\n" % (pts,style)
-
- pts = ','.join(['[%.4f,%.4f]' % (t,v)
- for t,v in data])
- style = "new Graph2D_LinePlotStyle(1, %r)" % col
- plot_js += " graph.addPlot([%s], %s);\n" % (pts,style)
-
- if points_data:
- pts_col = (0,0,0)
- pts = ','.join(['[%.4f,%.4f]' % (t,v)
- for t,v in points_data])
- style = "new Graph2D_PointPlotStyle(1, %r)" % (pts_col,)
- plot_js += " graph.addPlot([%s], %s);\n" % (pts,style)
-
- if errorbar_data:
- bar_col = [c*.7 for c in col]
- pts = ','.join(['[%.4f,%.4f,%.4f]' % (x,y_min,y_max)
- for x,y_min,y_max in errorbar_data])
- style = "new Graph2D_ErrorBarPlotStyle(1, %r)" % (bar_col,)
- plot_js += " graph.addPlot([%s], %s);\n" % (pts,style)
-
- yield (test_id, plot_js, col, data, points)
Removed: zorg/trunk/lnt/lnt/server/ui/static/View2D.js
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/static/View2D.js?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/static/View2D.js (original)
+++ zorg/trunk/lnt/lnt/server/ui/static/View2D.js (removed)
@@ -1,939 +0,0 @@
-//===-- View2D.js - HTML5 Canvas Based 2D View/Graph Widget ---------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements a generic 2D view widget and a 2D graph widget on top of
-// it, using the HTML5 Canvas. It currently supports Chrome, Firefox, and
-// Safari.
-//
-// See the Graph2D implementation for details of how to extend the View2D
-// object.
-//
-//===----------------------------------------------------------------------===//
-
-function lerp(a, b, t) {
- return a * (1.0 - t) + b * t;
-}
-
-function clamp(a, lower, upper) {
- return Math.max(lower, Math.min(upper, a));
-}
-
-function vec2_neg (a) { return [-a[0] , -a[1] ]; };
-function vec2_add (a, b) { return [a[0]+b[0], a[1]+b[1]]; };
-function vec2_addN(a, b) { return [a[0]+b , a[1]+b ]; };
-function vec2_sub (a, b) { return [a[0]-b[0], a[1]-b[1]]; };
-function vec2_subN(a, b) { return [a[0]-b , a[1]-b ]; };
-function vec2_mul (a, b) { return [a[0]*b[0], a[1]*b[1]]; };
-function vec2_mulN(a, b) { return [a[0]*b , a[1]*b ]; };
-function vec2_div (a, b) { return [a[0]/b[0], a[1]/b[1]]; };
-function vec2_divN(a, b) { return [a[0]/b , a[1]/b ]; };
-
-function vec3_neg (a) { return [-a[0] , -a[1] , -a[2] ]; };
-function vec3_add (a, b) { return [a[0]+b[0], a[1]+b[1], a[2]+b[2]]; };
-function vec3_addN(a, b) { return [a[0]+b , a[1]+b, a[2]+b ]; };
-function vec3_sub (a, b) { return [a[0]-b[0], a[1]-b[1], a[2]-b[2]]; };
-function vec3_subN(a, b) { return [a[0]-b , a[1]-b, a[2]-b ]; };
-function vec3_mul (a, b) { return [a[0]*b[0], a[1]*b[1], a[2]*b[2]]; };
-function vec3_mulN(a, b) { return [a[0]*b , a[1]*b, a[2]*b ]; };
-function vec3_div (a, b) { return [a[0]/b[0], a[1]/b[1], a[2]/b[2]]; };
-function vec3_divN(a, b) { return [a[0]/b , a[1]/b, a[2]/b ]; };
-
-function vec2_lerp(a, b, t) {
- return [lerp(a[0], b[0], t), lerp(a[1], b[1], t)];
-}
-function vec2_mag(a) {
- return a[0] * a[0] + a[1] * a[1];
-}
-function vec2_len(a) {
- return Math.sqrt(vec2_mag(a));
-}
-
-function vec2_floor(a) {
- return [Math.floor(a[0]), Math.floor(a[1])];
-}
-function vec2_ceil(a) {
- return [Math.ceil(a[0]), Math.ceil(a[1])];
-}
-
-function vec3_floor(a) {
- return [Math.floor(a[0]), Math.floor(a[1]), Math.floor(a[2])];
-}
-function vec3_ceil(a) {
- return [Math.ceil(a[0]), Math.ceil(a[1]), Math.ceil(a[2])];
-}
-
-function vec2_log(a) {
- return [Math.log(a[0]), Math.log(a[1])];
-}
-function vec2_pow(a, b) {
- return [Math.pow(a[0], b[0]), Math.pow(a[1], b[1])];
-}
-function vec2_Npow(a, b) {
- return [Math.pow(a, b[0]), Math.pow(a, b[1])];
-}
-function vec2_powN(a, b) {
- return [Math.pow(a[0], b), Math.pow(a[1], b)];
-}
-
-function vec2_min(a, b) {
- return [Math.min(a[0], b[0]), Math.min(a[1], b[1])];
-}
-function vec2_max(a, b) {
- return [Math.max(a[0], b[0]), Math.max(a[1], b[1])];
-}
-function vec2_clamp(a, lower, upper) {
- return [clamp(a[0], lower[0], upper[0]),
- clamp(a[1], lower[1], upper[1])];
-}
-function vec2_clampN(a, lower, upper) {
- return [clamp(a[0], lower, upper),
- clamp(a[1], lower, upper)];
-}
-
-function vec3_min(a, b) {
- return [Math.min(a[0], b[0]), Math.min(a[1], b[1]), Math.min(a[2], b[2])];
-}
-function vec3_max(a, b) {
- return [Math.max(a[0], b[0]), Math.max(a[1], b[1]), Math.max(a[2], b[2])];
-}
-function vec3_clamp(a, lower, upper) {
- return [clamp(a[0], lower[0], upper[0]),
- clamp(a[1], lower[1], upper[1]),
- clamp(a[2], lower[2], upper[2])];
-}
-function vec3_clampN(a, lower, upper) {
- return [clamp(a[0], lower, upper),
- clamp(a[1], lower, upper),
- clamp(a[2], lower, upper)];
-}
-
-function vec2_cswap(a, swap) {
- if (swap)
- return [a[1],a[0]];
- return a;
-}
-
-function col3_to_rgb(col) {
- var norm = vec3_floor(vec3_clampN(vec3_mulN(col, 255), 0, 255));
- return "rgb(" + norm[0] + "," + norm[1] + "," + norm[2] + ")";
-}
-
-function col4_to_rgba(col) {
- var norm = vec3_floor(vec3_clampN(vec3_mulN(col, 255), 0, 255));
- return "rgb(" + norm[0] + "," + norm[1] + "," + norm[2] + "," + col[3] + ")";
-}
-
-/* ViewData Class */
-
-function ViewData(location, scale) {
- if (!location)
- location = [0, 0];
- if (!scale)
- scale = [1, 1];
-
- this.location = location;
- this.scale = scale;
-}
-
-ViewData.prototype.copy = function() {
- return new ViewData(this.location, this.scale);
-}
-
-/* ViewAction Class */
-function ViewAction(mode, v2d, start) {
- this.mode = mode;
- this.start = start;
- this.vd = v2d.viewData.copy();
-}
-
-ViewAction.prototype.update = function(v2d, co) {
- if (this.mode == 'p') {
- var delta = vec2_sub(v2d.convertClientToNDC(co, this.vd),
- v2d.convertClientToNDC(this.start, this.vd))
- v2d.viewData.location = vec2_add(this.vd.location, delta);
- } else {
- var delta = vec2_sub(v2d.convertClientToNDC(co, this.vd),
- v2d.convertClientToNDC(this.start, this.vd))
- v2d.viewData.scale = vec2_Npow(Math.E,
- vec2_add(vec2_log(this.vd.scale),
- delta))
- v2d.viewData.location = vec2_mul(this.vd.location,
- vec2_div(v2d.viewData.scale,
- this.vd.scale))
- }
-
- v2d.refresh();
-}
-
-ViewAction.prototype.complete = function(v2d, co) {
- this.update(v2d, co);
-}
-
-ViewAction.prototype.abort = function(v2d) {
- v2d.viewData = this.vd;
-}
-
-/* EventWrapper Class */
-
-function EventWrapper(domevent) {
- this.domevent = domevent;
- this.client = {
- x: domevent.clientX,
- y: domevent.clientY,
- };
- this.alt = domevent.altKey;
- this.shift = domevent.shiftKey;
- this.meta = domevent.metaKey;
- this.wheel = (domevent.wheelDelta) ? domevent.wheelDelta / 120 : -(domevent.detail || 0) / 3;
-}
-
-EventWrapper.prototype.stop = function() {
- this.domevent.stopPropagation();
- this.domevent.preventDefault();
-}
-
-/* View2D Class */
-
-function View2D(canvasname) {
- this.canvasname = canvasname;
- this.viewData = new ViewData();
- this.size = [1, 1];
- this.aspect = 1;
- this.registered = false;
-
- this.viewAction = null;
-
- this.useWidgets = true;
- this.previewPosition = [5, 5];
- this.previewSize = [60, 60];
-
- this.clearColor = [1, 1, 1];
-
- // Bound once registered.
- this.canvas = null;
-}
-
-View2D.prototype.registerEvents = function(canvas) {
- if (this.registered)
- return;
-
- this.registered = true;
-
- this.canvas = canvas;
-
- // FIXME: Why do I have to do this?
- var obj = this;
-
- canvas.onmousedown = function(event) { obj.onMouseDown(new EventWrapper(event)); };
- canvas.onmousemove = function(event) { obj.onMouseMove(new EventWrapper(event)); };
- canvas.onmouseup = function(event) { obj.onMouseUp(new EventWrapper(event)); };
- canvas.onmousewheel = function(event) { obj.onMouseWheel(new EventWrapper(event)); };
- if (canvas.addEventListener) {
- canvas.addEventListener('DOMMouseScroll', function(event) { obj.onMouseWheel(new EventWrapper(event)); }, false);
- }
-
- // FIXME: Capturing!
-}
-
-View2D.prototype.onMouseDown = function(event) {
- pos = [event.client.x - this.canvas.offsetLeft,
- this.size[1] - 1 - (event.client.y - this.canvas.offsetTop)];
-
- if (this.viewAction != null)
- this.viewAction.abort(this);
-
- if (event.shift)
- this.viewAction = new ViewAction('p', this, pos);
- else if (event.alt || event.meta)
- this.viewAction = new ViewAction('z', this, pos);
- event.stop();
-}
-
-View2D.prototype.onMouseMove = function(event) {
- pos = [event.client.x - this.canvas.offsetLeft,
- this.size[1] - 1 - (event.client.y - this.canvas.offsetTop)];
-
- if (this.viewAction != null)
- this.viewAction.update(this, pos);
- event.stop();
-}
-
-View2D.prototype.onMouseUp = function(event) {
- pos = [event.client.x - this.canvas.offsetLeft,
- this.size[1] - 1 - (event.client.y - this.canvas.offsetTop)];
-
- if (this.viewAction != null)
- this.viewAction.complete(this, pos);
- this.viewAction = null;
- event.stop();
-}
-
-View2D.prototype.onMouseWheel = function(event) {
- if (this.viewAction == null) {
- var factor = event.wheel;
- if (event.shift)
- factor *= .1;
- var zoom = 1.0 + .03 * factor;
- this.viewData.location = vec2_mulN(this.viewData.location, zoom);
- this.viewData.scale = vec2_mulN(this.viewData.scale, zoom);
-
- // Arbitrary limit min and max scales for now, ideally would be derived
- // based on the view contents.
- this.viewData.scale = vec2_clampN(this.viewData.scale, 10e-6, 10e6);
-
- this.refresh();
- }
- event.stop();
-}
-
-View2D.prototype.setViewData = function(vd) {
- // FIXME: Check equality and avoid refresh.
- this.viewData = vd;
- this.refresh();
-}
-
-View2D.prototype.refresh = function() {
- // FIXME: Event loop?
- this.draw();
-}
-
-// Coordinate conversion.
-
-View2D.prototype.getAspectScale = function() {
- if (this.aspect > 1) {
- return [1.0 / this.aspect, 1.0];
- } else {
- return [1.0, this.aspect];
- }
-}
-
-View2D.prototype.getPixelSize = function() {
- return vec2_sub(this.convertClientToWorld([1,1]),
- this.convertClientToWorld([0,0]));
-}
-
-View2D.prototype.convertClientToNDC = function(pt, vd) {
- if (vd == null)
- vd = this.viewData
- return [pt[0] / this.size[0] * 2 - 1,
- pt[1] / this.size[1] * 2 - 1];
-}
-
-View2D.prototype.convertClientToWorld = function(pt, vd) {
- if (vd == null)
- vd = this.viewData
- pt = this.convertClientToNDC(pt, vd)
- pt = vec2_sub(pt, vd.location);
- pt = vec2_div(pt, vec2_mul(vd.scale, this.getAspectScale()));
- return pt;
-}
-
-View2D.prototype.convertWorldToPreview = function(pt, pos, size) {
- var asp_scale = this.getAspectScale();
- pt = vec2_mul(pt, asp_scale);
- pt = vec2_addN(pt, 1);
- pt = vec2_mulN(pt, .5);
- pt = vec2_mul(pt, size);
- pt = vec2_add(pt, pos);
- return pt;
-}
-
-View2D.prototype.setViewMatrix = function(ctx) {
- ctx.scale(this.size[0], this.size[1]);
- ctx.scale(.5, .5);
- ctx.translate(1, 1);
- ctx.translate(this.viewData.location[0], this.viewData.location[1]);
- var scale = vec2_mul(this.viewData.scale, this.getAspectScale());
- ctx.scale(scale[0], scale[1]);
-}
-
-View2D.prototype.setPreviewMatrix = function(ctx, pos, size) {
- ctx.translate(pos[0], pos[1]);
- ctx.scale(size[0], size[1]);
- ctx.scale(.5, .5);
- ctx.translate(1, 1);
- var scale = this.getAspectScale();
- ctx.scale(scale[0], scale[1]);
-}
-
-View2D.prototype.setWindowMatrix = function(ctx) {
- ctx.translate(.5, .5);
- ctx.translate(0, this.size[1]);
- ctx.scale(1, -1);
-}
-
-View2D.prototype.draw = function() {
- var canvas = document.getElementById(this.canvasname);
- var ctx = canvas.getContext("2d");
-
- this.registerEvents(canvas);
-
- if (canvas.width != this.size[0] || canvas.height != this.size[1]) {
- this.size = [canvas.width, canvas.height];
- this.aspect = canvas.width / canvas.height;
- this.previewPosition[0] = this.size[0] - this.previewSize[0] - 5;
- this.on_size_change();
- }
-
- this.on_draw_start();
-
- ctx.save();
-
- // Clear and draw the view content.
- ctx.save();
- this.setWindowMatrix(ctx);
-
- ctx.clearRect(0, 0, this.size[0], this.size[1]);
- ctx.fillStyle = col3_to_rgb(this.clearColor);
- ctx.fillRect(0, 0, this.size[0], this.size[1]);
-
- this.setViewMatrix(ctx);
- this.on_draw(canvas, ctx);
- ctx.restore();
-
- if (this.useWidgets)
- this.drawPreview(canvas, ctx)
-
- ctx.restore();
-}
-
-View2D.prototype.drawPreview = function(canvas, ctx) {
- // Setup the preview context.
- this.setWindowMatrix(ctx);
-
- // Draw the preview area outline.
- ctx.fillStyle = "rgba(128,128,128,.5)";
- ctx.fillRect(this.previewPosition[0]-1, this.previewPosition[1]-1,
- this.previewSize[0]+2, this.previewSize[1]+2);
- ctx.lineWidth = 1;
- ctx.strokeStyle = "rgb(0,0,0)";
- ctx.strokeRect(this.previewPosition[0]-1, this.previewPosition[1]-1,
- this.previewSize[0]+2, this.previewSize[1]+2);
-
- // Compute the aspect corrected preview area.
- var pv_size = [this.previewSize[0], this.previewSize[1]];
- if (this.aspect > 1) {
- pv_size[1] /= this.aspect;
- } else {
- pv_size[0] *= this.aspect;
- }
- var pv_pos = vec2_add(this.previewPosition,
- vec2_mulN(vec2_sub(this.previewSize, pv_size), .5));
-
- // Draw the preview, making sure to clip to the proper area.
- ctx.save();
- ctx.beginPath();
- ctx.rect(pv_pos[0], pv_pos[1], pv_size[0], pv_size[1]);
- ctx.clip();
- ctx.closePath();
-
- this.setPreviewMatrix(ctx, pv_pos, pv_size);
- this.on_draw_preview(canvas, ctx);
- ctx.restore();
-
- // Draw the current view overlay.
- //
- // FIXME: Find a replacement for stippling.
- ll = this.convertClientToWorld([0, 0])
- ur = this.convertClientToWorld(this.size);
-
- // Convert to pixel coordinates instead of drawing in content
- // perspective.
- ll = vec2_floor(this.convertWorldToPreview(ll, pv_pos, pv_size))
- ur = vec2_ceil(this.convertWorldToPreview(ur, pv_pos, pv_size))
- ll = vec2_clamp(ll, this.previewPosition,
- vec2_add(this.previewPosition, this.previewSize))
- ur = vec2_clamp(ur, this.previewPosition,
- vec2_add(this.previewPosition, this.previewSize))
-
- ctx.strokeStyle = "rgba(128,128,128,255)";
- ctx.lineWidth = 1;
- ctx.strokeRect(ll[0], ll[1], ur[0] - ll[0], ur[1] - ll[1]);
-}
-
-View2D.prototype.on_size_change = function() {}
-View2D.prototype.on_draw_start = function() {}
-View2D.prototype.on_draw = function(canvas, ctx) {}
-View2D.prototype.on_draw_preview = function(canvas, ctx) {}
-
-/* View2DTest Class */
-
-function View2DTest(canvasname) {
- View2D.call(this, canvasname);
-}
-View2DTest.prototype = new View2D();
-View2DTest.prototype.constructor = View2DTest;
-
-View2DTest.prototype.on_draw = function(canvas, ctx) {
- ctx.fillStyle = "rgb(255,255,255)";
- ctx.fillRect(-1000, -1000, 2000, 20000);
-
- ctx.lineWidth = .01;
- ctx.strokeTyle = "rgb(0,200,0)";
- ctx.strokeRect(-1, -1, 2, 2);
-
- ctx.fillStyle = "rgb(200,0,0)";
- ctx.fillRect(-.8, -.8, 1, 1);
-
- ctx.fillStyle = "rgb(0,0,200)";
- ctx.beginPath();
- ctx.arc(0, 0, .5, 0, 2 * Math.PI, false);
- ctx.fill();
- ctx.closePath();
-}
-
-View2DTest.prototype.on_draw_preview = function(canvas, ctx) {
- ctx.fillStyle = "rgba(255,255,255,.4)";
- ctx.fillRect(-1000, -1000, 2000, 20000);
-
- ctx.lineWidth = .01;
- ctx.strokeTyle = "rgba(0,200,0,.4)";
- ctx.strokeRect(-1, -1, 2, 2);
-
- ctx.fillStyle = "rgba(200,0,0,.4)";
- ctx.fillRect(-.8, -.8, 1, 1);
-
- ctx.fillStyle = "rgba(0,0,200,.4)";
- ctx.beginPath();
- ctx.arc(0, 0, .5, 0, 2 * Math.PI, false);
- ctx.fill();
- ctx.closePath();
-}
-
-/* Graph2D_GraphInfo Class */
-
-function Graph2D_GraphInfo() {
- this.xAxisH = 0;
- this.yAxisW = 0;
- this.ll = [0, 0];
- this.ur = [1, 1];
-}
-
-Graph2D_GraphInfo.prototype.toNDC = function(pt) {
- return [2 * (pt[0] - this.ll[0]) / (this.ur[0] - this.ll[0]) - 1,
- 2 * (pt[1] - this.ll[1]) / (this.ur[1] - this.ll[1]) - 1];
-}
-
-Graph2D_GraphInfo.prototype.fromNDC = function(pt) {
- return [this.ll[0] + (this.ur[0] - this.ll[0]) * (pt[0] + 1) * .5,
- this.ll[1] + (this.ur[1] - this.ll[1]) * (pt[1] + 1) * .5];
-}
-
-/* Graph2D_PlotStyle Class */
-
-function Graph2D_PlotStyle() {
-}
-
-Graph2D_PlotStyle.prototype.plot = function(graph, ctx, data) {}
-
-/* Graph2D_LinePlotStyle Class */
-
-function Graph2D_LinePlotStyle(width, color) {
- Graph2D_PlotStyle.call(this);
-
- if (!width)
- width = 1;
- if (!color)
- color = [0,0,0];
-
- this.width = width;
- this.color = color;
-}
-Graph2D_LinePlotStyle.prototype = new Graph2D_PlotStyle();
-Graph2D_LinePlotStyle.prototype.constructor = Graph2D_LinePlotStyle;
-
-Graph2D_LinePlotStyle.prototype.plot = function(graph, ctx, data) {
- if (data.length === 0)
- return;
-
- ctx.beginPath();
- var co = graph.graphInfo.toNDC(data[0]);
- ctx.moveTo(co[0], co[1]);
- for (var i = 1, e = data.length; i != e; ++i) {
- var co = graph.graphInfo.toNDC(data[i]);
- ctx.lineTo(co[0], co[1]);
- }
- ctx.lineWidth = this.width * (graph.getPixelSize()[0] + graph.getPixelSize()[1]) * .5;
- ctx.strokeStyle = col3_to_rgb(this.color);
- ctx.stroke();
-}
-
-/* Graph2D_PointPlotStyle Class */
-
-function Graph2D_PointPlotStyle(width, color) {
- Graph2D_PlotStyle.call(this);
-
- if (!width)
- width = 1;
- if (!color)
- color = [0,0,0];
-
- this.width = width;
- this.color = color;
-}
-Graph2D_PointPlotStyle.prototype = new Graph2D_PlotStyle();
-Graph2D_PointPlotStyle.prototype.constructor = Graph2D_PointPlotStyle;
-
-Graph2D_PointPlotStyle.prototype.plot = function(graph, ctx, data) {
- if (data.length === 0)
- return;
-
- ctx.beginPath();
- var radius = this.width * (graph.getPixelSize()[0] + graph.getPixelSize()[1]) * .5;
- for (var i = 0, e = data.length; i != e; ++i) {
- var co = graph.graphInfo.toNDC(data[i]);
- ctx.moveTo(co[0], co[1]);
- ctx.arc(co[0], co[1], radius, 0, Math.PI * 2, /*anticlockwise=*/false);
- }
- ctx.fillStyle = col3_to_rgb(this.color);
- ctx.fill();
-}
-
-/* Graph2D_ErrorBarPlotStyle Class */
-
-function Graph2D_ErrorBarPlotStyle(width, color) {
- Graph2D_PlotStyle.call(this);
-
- if (!width)
- width = 1;
- if (!color)
- color = [0,0,0];
-
- this.width = width;
- this.color = color;
-}
-Graph2D_ErrorBarPlotStyle.prototype = new Graph2D_PlotStyle();
-Graph2D_ErrorBarPlotStyle.prototype.constructor = Graph2D_ErrorBarPlotStyle;
-
-Graph2D_ErrorBarPlotStyle.prototype.plot = function(graph, ctx, data) {
- if (data.length === 0)
- return;
-
- ctx.beginPath();
- for (var i = 0, e = data.length; i != e; ++i) {
- var co_min = graph.graphInfo.toNDC([data[i][0], data[i][1]]);
- var co_max = graph.graphInfo.toNDC([data[i][0], data[i][2]]);
- ctx.moveTo(co_min[0], co_min[1]);
- ctx.lineTo(co_max[0], co_max[1]);
- }
- ctx.lineWidth = this.width * (graph.getPixelSize()[0] + graph.getPixelSize()[1]) * .5;
- ctx.strokeStyle = col3_to_rgb(this.color);
- ctx.stroke();
-}
-
-/* Graph2D_Axis Class */
-
-function Graph2D_Axis(dir, format) {
- if (!format)
- format = this.formats.normal;
-
- this.dir = dir;
- this.format = format;
-}
-
-// Static Methods
-Graph2D_Axis.prototype.formats = {
- normal: function(value, iDigits, fDigits) {
- // FIXME: iDigits?
- return value.toFixed(fDigits);
- },
- day: function(value, iDigits, fDigits) {
- var date = new Date(value * 1000.);
- var res = date.getUTCFullYear();
- res += "-" + (date.getUTCMonth() + 1);
- res += "-" + (date.getUTCDate() + 1);
- return res;
- },
-};
-
-Graph2D_Axis.prototype.draw = function(graph, ctx, ll, ur, mainUR) {
- var dir = this.dir, ndir = 1 - this.dir;
- var vMin = ll[dir];
- var vMax = ur[dir];
- var near = ll[ndir];
- var far = ur[ndir];
- var border = mainUR[ndir];
-
- var line_base = (graph.getPixelSize()[0] + graph.getPixelSize()[1]) * .5;
- ctx.lineWidth = 2 * line_base;
- ctx.strokeStyle = "rgb(0,0,0)";
-
- ctx.beginPath();
- var co = vec2_cswap([vMin, far], dir);
- co = graph.graphInfo.toNDC(co);
- ctx.moveTo(co[0], co[1]);
- var co = vec2_cswap([vMax, far], dir);
- co = graph.graphInfo.toNDC(co);
- ctx.lineTo(co[0], co[1]);
- ctx.stroke();
-
- var delta = vMax - vMin;
- var steps = Math.floor(Math.log(delta) / Math.log(10));
- if (delta / Math.pow(10, steps) >= 5.0) {
- var size = .5;
- } else if (delta / Math.pow(10, steps) >= 2.5) {
- var size = .25;
- } else {
- var size = .1;
- }
- size *= Math.pow(10, steps);
-
- if (steps <= 0) {
- var iDigits = 0, fDigits = 1 + Math.abs(steps);
- } else {
- var iDigits = steps, fDigits = 0;
- }
-
- var start = Math.ceil(vMin / size);
- var end = Math.ceil(vMax / size);
-
- // FIXME: Draw in window coordinates to make crisper.
-
- // FIXME: Draw grid in layers to avoid ugly overlaps.
-
- for (var i = start; i != end; ++i) {
- if (i == 0) {
- ctx.lineWidth = 3 * line_base;
- var p = .5;
- } else if (!(i & 1)) {
- ctx.lineWidth = 2 * line_base;
- var p = .5;
- } else {
- ctx.lineWidth = 1 * line_base;
- var p = .75;
- }
-
- ctx.beginPath();
- var co = vec2_cswap([i * size, lerp(near, far, p)], dir);
- co = graph.graphInfo.toNDC(co);
- ctx.moveTo(co[0], co[1]);
- var co = vec2_cswap([i * size, far], dir);
- co = graph.graphInfo.toNDC(co);
- ctx.lineTo(co[0], co[1]);
- ctx.stroke();
- }
-
- for (var alt = 0; alt < 2; ++alt) {
- if (alt)
- ctx.strokeStyle = "rgba(190,190,190,.5)";
- else
- ctx.strokeStyle = "rgba(128,128,128,.5)";
- ctx.lineWidth = 1 * line_base;
- ctx.beginPath();
- for (var i = start; i != end; ++i) {
- if (i == 0)
- continue;
- if ((i & 1) == alt) {
- var co = vec2_cswap([i * size, far], dir);
- co = graph.graphInfo.toNDC(co);
- ctx.moveTo(co[0], co[1]);
- var co = vec2_cswap([i * size, border], dir);
- co = graph.graphInfo.toNDC(co);
- ctx.lineTo(co[0], co[1]);
- }
- }
- ctx.stroke();
-
- if (start <= 0 && 0 < end) {
- ctx.beginPath();
- var co = vec2_cswap([0, far], dir);
- co = graph.graphInfo.toNDC(co);
- ctx.moveTo(co[0], co[1]);
- var co = vec2_cswap([0, border], dir);
- co = graph.graphInfo.toNDC(co);
- ctx.lineTo(co[0], co[1]);
- ctx.strokeStyle = "rgba(64,64,64,.5)";
- ctx.lineWidth = 3 * line_base;
- ctx.stroke();
- }
- }
-
- // FIXME: Draw this in screen coordinates, and stop being stupid. Also,
- // figure out font height?
- if (this.dir == 1) {
- var offset = [-.5, -.25];
- } else {
- var offset = [-.5, 1.1];
- }
- ctx.fillStyle = "rgb(0,0,0)";
- var pxl = graph.getPixelSize();
- for (var i = start; i != end; ++i) {
- if ((i & 1) == 0) {
- var label = this.format(i * size, iDigits, fDigits);
- ctx.save();
- var co = vec2_cswap([i*size, lerp(near, far, .5)], dir);
- co = graph.graphInfo.toNDC(co);
- ctx.translate(co[0], co[1]);
- ctx.scale(pxl[0], -pxl[1]);
- // FIXME: Abstract.
- var bb_w = label.length * 5;
- if (ctx.measureText != null)
- bb_w = ctx.measureText(label).width;
- var bb_h = 12;
- // FIXME: Abstract? Or ignore.
- if (ctx.fillText != null) {
- ctx.fillText(label, bb_w*offset[0], bb_h*offset[1]);
- } else if (ctx.mozDrawText != null) {
- ctx.translate(bb_w*offset[0], bb_h*offset[1]);
- ctx.mozDrawText(label);
- }
- ctx.restore();
- }
- }
-}
-
-
-/* Graph2D Class */
-
-function Graph2D(canvasname) {
- View2D.call(this, canvasname)
-
- this.useWidgets = false;
- this.plots = [];
- this.graphInfo = null;
- this.xAxis = new Graph2D_Axis(0);
- this.yAxis = new Graph2D_Axis(1);
- this.debugText = null;
-
- this.clearColor = [.8, .8, .8];
-}
-Graph2D.prototype = new View2D();
-Graph2D.prototype.constructor = Graph2D;
-
-//
-
-Graph2D.prototype.graphChanged = function() {
- this.graphInfo = null;
- // FIXME: Need event loop.
- this.refresh();
-}
-
-Graph2D.prototype.layoutGraph = function() {
- var gi = new Graph2D_GraphInfo();
-
- gi.xAxisH = 40;
- gi.yAxisW = 60;
-
- var min = null, max = null;
- for (var i = 0, e = this.plots.length; i != e; ++i) {
- var data = this.plots[i][0];
- for (var i2 = 0, e2 = data.length; i2 != e2; ++i2) {
- if (min == null)
- min = data[i2];
- else
- min = vec2_min(min, data[i2]);
-
- if (max == null)
- max = data[i2];
- else
- max = vec2_max(max, data[i2]);
- }
- }
-
- if (min === null)
- min = [0, 0];
- if (max === null)
- max = [0, 0];
- if (Math.abs(max[0] - min[0]) < .001)
- max[0] += 1;
- if (Math.abs(max[1] - min[1]) < .001)
- max[1] += 1;
-
- // Set graph transform to the [min,max] rect to the content area with
- // some padding.
- //
- // FIXME: Add real mat3 and implement this properly.
- var pad = 5;
- var vd = new ViewData();
- var ll_target = this.convertClientToWorld([gi.yAxisW + pad, gi.xAxisH + pad], vd);
- var ur_target = this.convertClientToWorld(vec2_subN(this.size, pad), vd);
- var target_size = vec2_sub(ur_target, ll_target);
- var target_center = vec2_add(ll_target, vec2_mulN(target_size, .5));
-
- var center = vec2_mulN(vec2_add(min, max), .5);
- var size = vec2_sub(max, min);
-
- var scale = vec2_mulN(target_size, .5);
- size = vec2_div(size, scale);
- center = vec2_sub(center, vec2_mulN(vec2_mul(target_center, size), .5));
-
- gi.ll = vec2_sub(center, vec2_mulN(size, .5));
- gi.ur = vec2_add(center, vec2_mulN(size, .5));
-
- return gi;
-}
-
-//
-
-Graph2D.prototype.convertClientToGraph = function(pt) {
- return this.graphInfo.fromNDC(this.convertClientToWorld(pt));
-}
-
-//
-
-Graph2D.prototype.on_size_change = function() {
- this.graphInfo = null;
-}
-
-Graph2D.prototype.on_draw_start = function() {
- if (!this.graphInfo)
- this.graphInfo = this.layoutGraph();
-}
-
-Graph2D.prototype.on_draw = function(canvas, ctx) {
- var gi = this.graphInfo;
- var w = this.size[0], h = this.size[1];
-
- this.xAxis.draw(this, ctx,
- this.convertClientToGraph([gi.yAxisW, 0]),
- this.convertClientToGraph([w, gi.xAxisH]),
- this.convertClientToGraph([w, h]))
- this.yAxis.draw(this, ctx,
- this.convertClientToGraph([0, gi.xAxisH]),
- this.convertClientToGraph([gi.yAxisW, h]),
- this.convertClientToGraph([w, h]))
-
- if (this.debugText != null) {
- ctx.save();
- ctx.setTransform(1, 0, 0, 1, 0, 0);
- ctx.fillText(this.debugText, this.size[0]/2 + 10, this.size[1]/2 + 10);
- ctx.restore();
- }
-
- // Draw the contents.
- ctx.save();
- ctx.beginPath();
- var content_ll = this.convertClientToWorld([gi.yAxisW, gi.xAxisH]);
- var content_ur = this.convertClientToWorld(this.size);
- ctx.rect(content_ll[0], content_ll[1],
- content_ur[0]-content_ll[0], content_ur[1]-content_ll[1]);
- ctx.clip();
-
- for (var i = 0, e = this.plots.length; i != e; ++i) {
- var data = this.plots[i][0];
- var style = this.plots[i][1];
- style.plot(this, ctx, data);
- }
- ctx.restore();
-}
-
-// Client API.
-
-Graph2D.prototype.clearPlots = function() {
- this.plots = [];
- this.graphChanged();
-}
-
-Graph2D.prototype.addPlot = function(data, style) {
- if (!style)
- style = new Graph2D_LinePlotStyle(1);
- this.plots.push( [data, style] );
- this.graphChanged();
-}
-
Removed: zorg/trunk/lnt/lnt/server/ui/static/View2DTest.html
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/static/View2DTest.html?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/static/View2DTest.html (original)
+++ zorg/trunk/lnt/lnt/server/ui/static/View2DTest.html (removed)
@@ -1,61 +0,0 @@
-<html>
- <head>
- <title>View2D Test</title>
- <script src="View2D.js"></script>
- <script type="text/javascript">
-var viewA, viewB, graphA;
-
-function init() {
- viewA = new View2DTest("view2d");
- viewA.viewData.location = [-.2, -.15];
- viewA.viewData.scale = [2, 2];
- viewA.draw();
-
- viewB = new View2DTest("view2d_2");
- viewB.viewData.location = [-.2, -.15];
- viewB.viewData.scale = [.5, .5];
- viewB.draw();
-
- var pts_0 = [ [0, 0], [1, 1.3], [2, 2.2], [3, 1.3], [4, 4],
- [5,3], [6, 4], [7, 4.4]];
- pts_0 = pts_0.map(function(item, index, array) {
- return vec2_mulN(item, .1);
- });
- var pts_1 = pts_0.map(function(item, index, array) {
- return [item[0], .2 + item[1] * (1 - item[0] / 2)];
- });
- var pts_2 = pts_0.map(function(item, index, array) {
- return [item[0], 1 - item[1]];
- });
- var pts_3 = pts_0.map(function(item, index, array) {
- return [item[0], item[1] - .1, item[1] + .1];
- });
- graphA = new Graph2D("graph2d");
-if (1) {
- graphA.addPlot(pts_0, new Graph2D_LinePlotStyle(2));
- graphA.addPlot(pts_1);
- graphA.addPlot(pts_2, new Graph2D_LinePlotStyle(null, [1,0,0]));
- graphA.addPlot(pts_0, new Graph2D_PointPlotStyle(5, [.8, .5, 0]));
- graphA.addPlot(pts_3, new Graph2D_ErrorBarPlotStyle(1, [0, 1, 0]));
-} else {
- graphA.addPlot([[1248617856.000000,1.398600],[1248960469.000000,1.241700],[1249396047.000000,1.214300],[1249488792.000000,1.211600],[1249564554.000000,1.239500],[1249732514.000000,1.239200],[1249819044.000000,1.236300],[1249910746.000000,1.234200],[1249996733.000000,1.236000],[1250083258.000000,1.252600],[1250255237.000000,1.260400],[1250341501.000000,1.253500],[1250427966.000000,1.262600],[1250514329.000000,1.261600],[1250600211.000000,1.249100],[1250686801.000000,1.250700],[1250773065.000000,1.255400],[1250859519.000000,1.246300],[1250946756.000000,1.245900],[1251032239.000000,1.238200],[1251118837.000000,1.238000],[1251205034.000000,1.241900],[1251292148.000000,1.236500],[1251379354.000000,1.230200],[1251466226.000000,1.228700],[1251552218.000000,1.233600],[1251638633.000000,1.222400],[1251725230.000000,1.222100],[1251811608.000000,1.239100],[1251898565.000000,1.230200],[1251984695.000000,1.241700],[1252070572.000000,1.205800],[1252157268.000000,1.211100],[1252243914.
000000,1.210300],[1252330714.000000,1.206000],[1252416809.000000,1.210800],[1252590190.000000,1.216800],[1252675459.000000,1.214400],[1252762486.000000,1.220700],[1252886652.000000,1.221700],[1252935938.000000,1.215200],[1253021864.000000,1.213800],[1253108596.000000,1.213800],[1253194864.000000,1.231900],[1253281344.000000,1.232000],[1253366664.000000,1.238400],[1253453169.000000,1.232500],[1253539839.000000,1.230100],[1253627357.000000,1.232600],[1253713381.000000,1.235700],[1253799754.000000,1.232400],[1253886021.000000,1.241900],[1253972269.000000,1.229700],[1254058753.000000,1.229100],[1254145361.000000,1.284000],[1254231276.000000,1.295200],[1254317581.000000,1.299800],[1254405166.000000,1.340600],[1254490117.000000,1.305300],[1254576631.000000,1.304100],[1254662979.000000,1.303700],[1254749498.000000,1.306800],[1254835808.000000,1.306200],[1254922190.000000,1.270100],[1255008713.000000,1.270900],[1255094924.000000,1.267300],[1255181629.000000,1.265100],[1255267916.000
000,1.283300],[1255354566.000000,1.285500],[1255440921.000000,1.287100],[1255526237.000000,1.269800],[1255613420.000000,1.318400],[1255700706.000000,1.301600],[1255786760.000000,1.305000],[1255873293.000000,1.305000],[1255959875.000000,1.438800],[1256046280.000000,1.437400],[1256132389.000000,1.439100],[1256218592.000000,1.461200],[1256304662.000000,1.464100],[1256391812.000000,1.462300],[1256478151.000000,1.469600],[1256564495.000000,1.472300],[1256823554.000000,1.474000],[1256909311.000000,1.477200],[1256996077.000000,1.459000],[1257082516.000000,1.426100],[1257258543.000000,1.433700],[1257344527.000000,1.452600],[1257431075.000000,1.440700],[1257516720.000000,1.443300],[1257602894.000000,1.503300],[1257863543.000000,1.550200],[1257948938.000000,1.532500],[1258035827.000000,1.534900],[1258122304.000000,1.535600],[1258207973.000000,1.546700],[1258294248.000000,1.534700],[1258382337.000000,1.544000],[1258551986.000000,1.509100],[1258640333.000000,1.554300],[1258728912.000000
,1.541100],[1258815149.000000,1.602700],[1258901720.000000,1.685900]]);
-graphA.xAxis.format = graphA.xAxis.formats.day;
-}
- graphA.draw();
-}
- </script>
- </head>
- <body onload="init()" bgcolor="#AAAAAA">
- <canvas id="graph2d" width="600" height="400"></canvas>
- <br>
- <table>
- <tr>
- <td><canvas id="view2d" width="300" height="200"></canvas></td>
- <td><canvas id="view2d_2" width="200" height="350"></canvas></td>
- </tr>
- </table>
- Shift-Left Mouse: Pan<br>
- Alt/Meta-Left Mouse: Zoom<br>
- Wheel: Zoom (<i>Shift Slows</i>)<br>
- </body>
-</html>
Removed: zorg/trunk/lnt/lnt/server/ui/static/favicon.ico
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/static/favicon.ico?rev=156009&view=auto
==============================================================================
Binary files zorg/trunk/lnt/lnt/server/ui/static/favicon.ico (original) and zorg/trunk/lnt/lnt/server/ui/static/favicon.ico (removed) differ
Removed: zorg/trunk/lnt/lnt/server/ui/static/flot/API.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/static/flot/API.txt?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/static/flot/API.txt (original)
+++ zorg/trunk/lnt/lnt/server/ui/static/flot/API.txt (removed)
@@ -1,1201 +0,0 @@
-Flot Reference
---------------
-
-Consider a call to the plot function:
-
- var plot = $.plot(placeholder, data, options)
-
-The placeholder is a jQuery object or DOM element or jQuery expression
-that the plot will be put into. This placeholder needs to have its
-width and height set as explained in the README (go read that now if
-you haven't, it's short). The plot will modify some properties of the
-placeholder so it's recommended you simply pass in a div that you
-don't use for anything else. Make sure you check any fancy styling
-you apply to the div, e.g. background images have been reported to be a
-problem on IE 7.
-
-The format of the data is documented below, as is the available
-options. The plot object returned from the call has some methods you
-can call. These are documented separately below.
-
-Note that in general Flot gives no guarantees if you change any of the
-objects you pass in to the plot function or get out of it since
-they're not necessarily deep-copied.
-
-
-Data Format
------------
-
-The data is an array of data series:
-
- [ series1, series2, ... ]
-
-A series can either be raw data or an object with properties. The raw
-data format is an array of points:
-
- [ [x1, y1], [x2, y2], ... ]
-
-E.g.
-
- [ [1, 3], [2, 14.01], [3.5, 3.14] ]
-
-Note that to simplify the internal logic in Flot both the x and y
-values must be numbers (even if specifying time series, see below for
-how to do this). This is a common problem because you might retrieve
-data from the database and serialize them directly to JSON without
-noticing the wrong type. If you're getting mysterious errors, double
-check that you're inputting numbers and not strings.
-
-If a null is specified as a point or if one of the coordinates is null
-or couldn't be converted to a number, the point is ignored when
-drawing. As a special case, a null value for lines is interpreted as a
-line segment end, i.e. the points before and after the null value are
-not connected.
-
-Lines and points take two coordinates. For filled lines and bars, you
-can specify a third coordinate which is the bottom of the filled
-area/bar (defaults to 0).
-
-The format of a single series object is as follows:
-
- {
- color: color or number
- data: rawdata
- label: string
- lines: specific lines options
- bars: specific bars options
- points: specific points options
- xaxis: number
- yaxis: number
- clickable: boolean
- hoverable: boolean
- shadowSize: number
- }
-
-You don't have to specify any of them except the data, the rest are
-options that will get default values. Typically you'd only specify
-label and data, like this:
-
- {
- label: "y = 3",
- data: [[0, 3], [10, 3]]
- }
-
-The label is used for the legend, if you don't specify one, the series
-will not show up in the legend.
-
-If you don't specify color, the series will get a color from the
-auto-generated colors. The color is either a CSS color specification
-(like "rgb(255, 100, 123)") or an integer that specifies which of
-auto-generated colors to select, e.g. 0 will get color no. 0, etc.
-
-The latter is mostly useful if you let the user add and remove series,
-in which case you can hard-code the color index to prevent the colors
-from jumping around between the series.
-
-The "xaxis" and "yaxis" options specify which axis to use. The axes
-are numbered from 1 (default), so { yaxis: 2} means that the series
-should be plotted against the second y axis.
-
-"clickable" and "hoverable" can be set to false to disable
-interactivity for specific series if interactivity is turned on in
-the plot, see below.
-
-The rest of the options are all documented below as they are the same
-as the default options passed in via the options parameter in the plot
-commmand. When you specify them for a specific data series, they will
-override the default options for the plot for that data series.
-
-Here's a complete example of a simple data specification:
-
- [ { label: "Foo", data: [ [10, 1], [17, -14], [30, 5] ] },
- { label: "Bar", data: [ [11, 13], [19, 11], [30, -7] ] } ]
-
-
-Plot Options
-------------
-
-All options are completely optional. They are documented individually
-below, to change them you just specify them in an object, e.g.
-
- var options = {
- series: {
- lines: { show: true },
- points: { show: true }
- }
- };
-
- $.plot(placeholder, data, options);
-
-
-Customizing the legend
-======================
-
- legend: {
- show: boolean
- labelFormatter: null or (fn: string, series object -> string)
- labelBoxBorderColor: color
- noColumns: number
- position: "ne" or "nw" or "se" or "sw"
- margin: number of pixels or [x margin, y margin]
- backgroundColor: null or color
- backgroundOpacity: number between 0 and 1
- container: null or jQuery object/DOM element/jQuery expression
- }
-
-The legend is generated as a table with the data series labels and
-small label boxes with the color of the series. If you want to format
-the labels in some way, e.g. make them to links, you can pass in a
-function for "labelFormatter". Here's an example that makes them
-clickable:
-
- labelFormatter: function(label, series) {
- // series is the series object for the label
- return '<a href="#' + label + '">' + label + '</a>';
- }
-
-"noColumns" is the number of columns to divide the legend table into.
-"position" specifies the overall placement of the legend within the
-plot (top-right, top-left, etc.) and margin the distance to the plot
-edge (this can be either a number or an array of two numbers like [x,
-y]). "backgroundColor" and "backgroundOpacity" specifies the
-background. The default is a partly transparent auto-detected
-background.
-
-If you want the legend to appear somewhere else in the DOM, you can
-specify "container" as a jQuery object/expression to put the legend
-table into. The "position" and "margin" etc. options will then be
-ignored. Note that Flot will overwrite the contents of the container.
-
-
-Customizing the axes
-====================
-
- xaxis, yaxis: {
- show: null or true/false
- position: "bottom" or "top" or "left" or "right"
- mode: null or "time"
-
- color: null or color spec
- tickColor: null or color spec
-
- min: null or number
- max: null or number
- autoscaleMargin: null or number
-
- transform: null or fn: number -> number
- inverseTransform: null or fn: number -> number
-
- ticks: null or number or ticks array or (fn: range -> ticks array)
- tickSize: number or array
- minTickSize: number or array
- tickFormatter: (fn: number, object -> string) or string
- tickDecimals: null or number
-
- labelWidth: null or number
- labelHeight: null or number
- reserveSpace: null or true
-
- tickLength: null or number
-
- alignTicksWithAxis: null or number
- }
-
-All axes have the same kind of options. The following describes how to
-configure one axis, see below for what to do if you've got more than
-one x axis or y axis.
-
-If you don't set the "show" option (i.e. it is null), visibility is
-auto-detected, i.e. the axis will show up if there's data associated
-with it. You can override this by setting the "show" option to true or
-false.
-
-The "position" option specifies where the axis is placed, bottom or
-top for x axes, left or right for y axes. The "mode" option determines
-how the data is interpreted, the default of null means as decimal
-numbers. Use "time" for time series data, see the time series data
-section.
-
-The "color" option determines the color of the labels and ticks for
-the axis (default is the grid color). For more fine-grained control
-you can also set the color of the ticks separately with "tickColor"
-(otherwise it's autogenerated as the base color with some
-transparency).
-
-The options "min"/"max" are the precise minimum/maximum value on the
-scale. If you don't specify either of them, a value will automatically
-be chosen based on the minimum/maximum data values. Note that Flot
-always examines all the data values you feed to it, even if a
-restriction on another axis may make some of them invisible (this
-makes interactive use more stable).
-
-The "autoscaleMargin" is a bit esoteric: it's the fraction of margin
-that the scaling algorithm will add to avoid that the outermost points
-ends up on the grid border. Note that this margin is only applied when
-a min or max value is not explicitly set. If a margin is specified,
-the plot will furthermore extend the axis end-point to the nearest
-whole tick. The default value is "null" for the x axes and 0.02 for y
-axes which seems appropriate for most cases.
-
-"transform" and "inverseTransform" are callbacks you can put in to
-change the way the data is drawn. You can design a function to
-compress or expand certain parts of the axis non-linearly, e.g.
-suppress weekends or compress far away points with a logarithm or some
-other means. When Flot draws the plot, each value is first put through
-the transform function. Here's an example, the x axis can be turned
-into a natural logarithm axis with the following code:
-
- xaxis: {
- transform: function (v) { return Math.log(v); },
- inverseTransform: function (v) { return Math.exp(v); }
- }
-
-Similarly, for reversing the y axis so the values appear in inverse
-order:
-
- yaxis: {
- transform: function (v) { return -v; },
- inverseTransform: function (v) { return -v; }
- }
-
-Note that for finding extrema, Flot assumes that the transform
-function does not reorder values (it should be monotone).
-
-The inverseTransform is simply the inverse of the transform function
-(so v == inverseTransform(transform(v)) for all relevant v). It is
-required for converting from canvas coordinates to data coordinates,
-e.g. for a mouse interaction where a certain pixel is clicked. If you
-don't use any interactive features of Flot, you may not need it.
-
-
-The rest of the options deal with the ticks.
-
-If you don't specify any ticks, a tick generator algorithm will make
-some for you. The algorithm has two passes. It first estimates how
-many ticks would be reasonable and uses this number to compute a nice
-round tick interval size. Then it generates the ticks.
-
-You can specify how many ticks the algorithm aims for by setting
-"ticks" to a number. The algorithm always tries to generate reasonably
-round tick values so even if you ask for three ticks, you might get
-five if that fits better with the rounding. If you don't want any
-ticks at all, set "ticks" to 0 or an empty array.
-
-Another option is to skip the rounding part and directly set the tick
-interval size with "tickSize". If you set it to 2, you'll get ticks at
-2, 4, 6, etc. Alternatively, you can specify that you just don't want
-ticks at a size less than a specific tick size with "minTickSize".
-Note that for time series, the format is an array like [2, "month"],
-see the next section.
-
-If you want to completely override the tick algorithm, you can specify
-an array for "ticks", either like this:
-
- ticks: [0, 1.2, 2.4]
-
-Or like this where the labels are also customized:
-
- ticks: [[0, "zero"], [1.2, "one mark"], [2.4, "two marks"]]
-
-You can mix the two if you like.
-
-For extra flexibility you can specify a function as the "ticks"
-parameter. The function will be called with an object with the axis
-min and max and should return a ticks array. Here's a simplistic tick
-generator that spits out intervals of pi, suitable for use on the x
-axis for trigonometric functions:
-
- function piTickGenerator(axis) {
- var res = [], i = Math.floor(axis.min / Math.PI);
- do {
- var v = i * Math.PI;
- res.push([v, i + "\u03c0"]);
- ++i;
- } while (v < axis.max);
-
- return res;
- }
-
-You can control how the ticks look like with "tickDecimals", the
-number of decimals to display (default is auto-detected).
-
-Alternatively, for ultimate control over how ticks are formatted you can
-provide a function to "tickFormatter". The function is passed two
-parameters, the tick value and an axis object with information, and
-should return a string. The default formatter looks like this:
-
- function formatter(val, axis) {
- return val.toFixed(axis.tickDecimals);
- }
-
-The axis object has "min" and "max" with the range of the axis,
-"tickDecimals" with the number of decimals to round the value to and
-"tickSize" with the size of the interval between ticks as calculated
-by the automatic axis scaling algorithm (or specified by you). Here's
-an example of a custom formatter:
-
- function suffixFormatter(val, axis) {
- if (val > 1000000)
- return (val / 1000000).toFixed(axis.tickDecimals) + " MB";
- else if (val > 1000)
- return (val / 1000).toFixed(axis.tickDecimals) + " kB";
- else
- return val.toFixed(axis.tickDecimals) + " B";
- }
-
-"labelWidth" and "labelHeight" specifies a fixed size of the tick
-labels in pixels. They're useful in case you need to align several
-plots. "reserveSpace" means that even if an axis isn't shown, Flot
-should reserve space for it - it is useful in combination with
-labelWidth and labelHeight for aligning multi-axis charts.
-
-"tickLength" is the length of the tick lines in pixels. By default, the
-innermost axes will have ticks that extend all across the plot, while
-any extra axes use small ticks. A value of null means use the default,
-while a number means small ticks of that length - set it to 0 to hide
-the lines completely.
-
-If you set "alignTicksWithAxis" to the number of another axis, e.g.
-alignTicksWithAxis: 1, Flot will ensure that the autogenerated ticks
-of this axis are aligned with the ticks of the other axis. This may
-improve the looks, e.g. if you have one y axis to the left and one to
-the right, because the grid lines will then match the ticks in both
-ends. The trade-off is that the forced ticks won't necessarily be at
-natural places.
-
-
-Multiple axes
-=============
-
-If you need more than one x axis or y axis, you need to specify for
-each data series which axis they are to use, as described under the
-format of the data series, e.g. { data: [...], yaxis: 2 } specifies
-that a series should be plotted against the second y axis.
-
-To actually configure that axis, you can't use the xaxis/yaxis options
-directly - instead there are two arrays in the options:
-
- xaxes: []
- yaxes: []
-
-Here's an example of configuring a single x axis and two y axes (we
-can leave options of the first y axis empty as the defaults are fine):
-
- {
- xaxes: [ { position: "top" } ],
- yaxes: [ { }, { position: "right", min: 20 } ]
- }
-
-The arrays get their default values from the xaxis/yaxis settings, so
-say you want to have all y axes start at zero, you can simply specify
-yaxis: { min: 0 } instead of adding a min parameter to all the axes.
-
-Generally, the various interfaces in Flot dealing with data points
-either accept an xaxis/yaxis parameter to specify which axis number to
-use (starting from 1), or lets you specify the coordinate directly as
-x2/x3/... or x2axis/x3axis/... instead of "x" or "xaxis".
-
-
-Time series data
-================
-
-Time series are a bit more difficult than scalar data because
-calendars don't follow a simple base 10 system. For many cases, Flot
-abstracts most of this away, but it can still be a bit difficult to
-get the data into Flot. So we'll first discuss the data format.
-
-The time series support in Flot is based on Javascript timestamps,
-i.e. everywhere a time value is expected or handed over, a Javascript
-timestamp number is used. This is a number, not a Date object. A
-Javascript timestamp is the number of milliseconds since January 1,
-1970 00:00:00 UTC. This is almost the same as Unix timestamps, except it's
-in milliseconds, so remember to multiply by 1000!
-
-You can see a timestamp like this
-
- alert((new Date()).getTime())
-
-Normally you want the timestamps to be displayed according to a
-certain time zone, usually the time zone in which the data has been
-produced. However, Flot always displays timestamps according to UTC.
-It has to as the only alternative with core Javascript is to interpret
-the timestamps according to the time zone that the visitor is in,
-which means that the ticks will shift unpredictably with the time zone
-and daylight savings of each visitor.
-
-So given that there's no good support for custom time zones in
-Javascript, you'll have to take care of this server-side.
-
-The easiest way to think about it is to pretend that the data
-production time zone is UTC, even if it isn't. So if you have a
-datapoint at 2002-02-20 08:00, you can generate a timestamp for eight
-o'clock UTC even if it really happened eight o'clock UTC+0200.
-
-In PHP you can get an appropriate timestamp with
-'strtotime("2002-02-20 UTC") * 1000', in Python with
-'calendar.timegm(datetime_object.timetuple()) * 1000', in .NET with
-something like:
-
- public static int GetJavascriptTimestamp(System.DateTime input)
- {
- System.TimeSpan span = new System.TimeSpan(System.DateTime.Parse("1/1/1970").Ticks);
- System.DateTime time = input.Subtract(span);
- return (long)(time.Ticks / 10000);
- }
-
-Javascript also has some support for parsing date strings, so it is
-possible to generate the timestamps manually client-side.
-
-If you've already got the real UTC timestamp, it's too late to use the
-pretend trick described above. But you can fix up the timestamps by
-adding the time zone offset, e.g. for UTC+0200 you would add 2 hours
-to the UTC timestamp you got. Then it'll look right on the plot. Most
-programming environments have some means of getting the timezone
-offset for a specific date (note that you need to get the offset for
-each individual timestamp to account for daylight savings).
-
-Once you've gotten the timestamps into the data and specified "time"
-as the axis mode, Flot will automatically generate relevant ticks and
-format them. As always, you can tweak the ticks via the "ticks" option
-- just remember that the values should be timestamps (numbers), not
-Date objects.
-
-Tick generation and formatting can also be controlled separately
-through the following axis options:
-
- minTickSize: array
- timeformat: null or format string
- monthNames: null or array of size 12 of strings
- twelveHourClock: boolean
-
-Here "timeformat" is a format string to use. You might use it like
-this:
-
- xaxis: {
- mode: "time"
- timeformat: "%y/%m/%d"
- }
-
-This will result in tick labels like "2000/12/24". The following
-specifiers are supported
-
- %h: hours
- %H: hours (left-padded with a zero)
- %M: minutes (left-padded with a zero)
- %S: seconds (left-padded with a zero)
- %d: day of month (1-31), use %0d for zero-padding
- %m: month (1-12), use %0m for zero-padding
- %y: year (four digits)
- %b: month name (customizable)
- %p: am/pm, additionally switches %h/%H to 12 hour instead of 24
- %P: AM/PM (uppercase version of %p)
-
-Inserting a zero like %0m or %0d means that the specifier will be
-left-padded with a zero if it's only single-digit. So %y-%0m-%0d
-results in unambigious ISO timestamps like 2007-05-10 (for May 10th).
-
-You can customize the month names with the "monthNames" option. For
-instance, for Danish you might specify:
-
- monthNames: ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"]
-
-If you set "twelveHourClock" to true, the autogenerated timestamps
-will use 12 hour AM/PM timestamps instead of 24 hour.
-
-The format string and month names are used by a very simple built-in
-format function that takes a date object, a format string (and
-optionally an array of month names) and returns the formatted string.
-If needed, you can access it as $.plot.formatDate(date, formatstring,
-monthNames) or even replace it with another more advanced function
-from a date library if you're feeling adventurous.
-
-If everything else fails, you can control the formatting by specifying
-a custom tick formatter function as usual. Here's a simple example
-which will format December 24 as 24/12:
-
- tickFormatter: function (val, axis) {
- var d = new Date(val);
- return d.getUTCDate() + "/" + (d.getUTCMonth() + 1);
- }
-
-Note that for the time mode "tickSize" and "minTickSize" are a bit
-special in that they are arrays on the form "[value, unit]" where unit
-is one of "second", "minute", "hour", "day", "month" and "year". So
-you can specify
-
- minTickSize: [1, "month"]
-
-to get a tick interval size of at least 1 month and correspondingly,
-if axis.tickSize is [2, "day"] in the tick formatter, the ticks have
-been produced with two days in-between.
-
-
-
-Customizing the data series
-===========================
-
- series: {
- lines, points, bars: {
- show: boolean
- lineWidth: number
- fill: boolean or number
- fillColor: null or color/gradient
- }
-
- points: {
- radius: number
- symbol: "circle" or function
- }
-
- bars: {
- barWidth: number
- align: "left" or "center"
- horizontal: boolean
- }
-
- lines: {
- steps: boolean
- }
-
- shadowSize: number
- }
-
- colors: [ color1, color2, ... ]
-
-The options inside "series: {}" are copied to each of the series. So
-you can specify that all series should have bars by putting it in the
-global options, or override it for individual series by specifying
-bars in a particular the series object in the array of data.
-
-The most important options are "lines", "points" and "bars" that
-specify whether and how lines, points and bars should be shown for
-each data series. In case you don't specify anything at all, Flot will
-default to showing lines (you can turn this off with
-lines: { show: false }). You can specify the various types
-independently of each other, and Flot will happily draw each of them
-in turn (this is probably only useful for lines and points), e.g.
-
- var options = {
- series: {
- lines: { show: true, fill: true, fillColor: "rgba(255, 255, 255, 0.8)" },
- points: { show: true, fill: false }
- }
- };
-
-"lineWidth" is the thickness of the line or outline in pixels. You can
-set it to 0 to prevent a line or outline from being drawn; this will
-also hide the shadow.
-
-"fill" is whether the shape should be filled. For lines, this produces
-area graphs. You can use "fillColor" to specify the color of the fill.
-If "fillColor" evaluates to false (default for everything except
-points which are filled with white), the fill color is auto-set to the
-color of the data series. You can adjust the opacity of the fill by
-setting fill to a number between 0 (fully transparent) and 1 (fully
-opaque).
-
-For bars, fillColor can be a gradient, see the gradient documentation
-below. "barWidth" is the width of the bars in units of the x axis (or
-the y axis if "horizontal" is true), contrary to most other measures
-that are specified in pixels. For instance, for time series the unit
-is milliseconds so 24 * 60 * 60 * 1000 produces bars with the width of
-a day. "align" specifies whether a bar should be left-aligned
-(default) or centered on top of the value it represents. When
-"horizontal" is on, the bars are drawn horizontally, i.e. from the y
-axis instead of the x axis; note that the bar end points are still
-defined in the same way so you'll probably want to swap the
-coordinates if you've been plotting vertical bars first.
-
-For lines, "steps" specifies whether two adjacent data points are
-connected with a straight (possibly diagonal) line or with first a
-horizontal and then a vertical line. Note that this transforms the
-data by adding extra points.
-
-For points, you can specify the radius and the symbol. The only
-built-in symbol type is circles, for other types you can use a plugin
-or define them yourself by specifying a callback:
-
- function cross(ctx, x, y, radius, shadow) {
- var size = radius * Math.sqrt(Math.PI) / 2;
- ctx.moveTo(x - size, y - size);
- ctx.lineTo(x + size, y + size);
- ctx.moveTo(x - size, y + size);
- ctx.lineTo(x + size, y - size);
- }
-
-The parameters are the drawing context, x and y coordinates of the
-center of the point, a radius which corresponds to what the circle
-would have used and whether the call is to draw a shadow (due to
-limited canvas support, shadows are currently faked through extra
-draws). It's good practice to ensure that the area covered by the
-symbol is the same as for the circle with the given radius, this
-ensures that all symbols have approximately the same visual weight.
-
-"shadowSize" is the default size of shadows in pixels. Set it to 0 to
-remove shadows.
-
-The "colors" array specifies a default color theme to get colors for
-the data series from. You can specify as many colors as you like, like
-this:
-
- colors: ["#d18b2c", "#dba255", "#919733"]
-
-If there are more data series than colors, Flot will try to generate
-extra colors by lightening and darkening colors in the theme.
-
-
-Customizing the grid
-====================
-
- grid: {
- show: boolean
- aboveData: boolean
- color: color
- backgroundColor: color/gradient or null
- labelMargin: number
- axisMargin: number
- markings: array of markings or (fn: axes -> array of markings)
- borderWidth: number
- borderColor: color or null
- minBorderMargin: number or null
- clickable: boolean
- hoverable: boolean
- autoHighlight: boolean
- mouseActiveRadius: number
- }
-
-The grid is the thing with the axes and a number of ticks. Many of the
-things in the grid are configured under the individual axes, but not
-all. "color" is the color of the grid itself whereas "backgroundColor"
-specifies the background color inside the grid area, here null means
-that the background is transparent. You can also set a gradient, see
-the gradient documentation below.
-
-You can turn off the whole grid including tick labels by setting
-"show" to false. "aboveData" determines whether the grid is drawn
-above the data or below (below is default).
-
-"labelMargin" is the space in pixels between tick labels and axis
-line, and "axisMargin" is the space in pixels between axes when there
-are two next to each other. Note that you can style the tick labels
-with CSS, e.g. to change the color. They have class "tickLabel".
-
-"borderWidth" is the width of the border around the plot. Set it to 0
-to disable the border. You can also set "borderColor" if you want the
-border to have a different color than the grid lines.
-"minBorderMargin" controls the default minimum margin around the
-border - it's used to make sure that points aren't accidentally
-clipped by the canvas edge so by default the value is computed from
-the point radius.
-
-"markings" is used to draw simple lines and rectangular areas in the
-background of the plot. You can either specify an array of ranges on
-the form { xaxis: { from, to }, yaxis: { from, to } } (with multiple
-axes, you can specify coordinates for other axes instead, e.g. as
-x2axis/x3axis/...) or with a function that returns such an array given
-the axes for the plot in an object as the first parameter.
-
-You can set the color of markings by specifying "color" in the ranges
-object. Here's an example array:
-
- markings: [ { xaxis: { from: 0, to: 2 }, yaxis: { from: 10, to: 10 }, color: "#bb0000" }, ... ]
-
-If you leave out one of the values, that value is assumed to go to the
-border of the plot. So for example if you only specify { xaxis: {
-from: 0, to: 2 } } it means an area that extends from the top to the
-bottom of the plot in the x range 0-2.
-
-A line is drawn if from and to are the same, e.g.
-
- markings: [ { yaxis: { from: 1, to: 1 } }, ... ]
-
-would draw a line parallel to the x axis at y = 1. You can control the
-line width with "lineWidth" in the range object.
-
-An example function that makes vertical stripes might look like this:
-
- markings: function (axes) {
- var markings = [];
- for (var x = Math.floor(axes.xaxis.min); x < axes.xaxis.max; x += 2)
- markings.push({ xaxis: { from: x, to: x + 1 } });
- return markings;
- }
-
-
-If you set "clickable" to true, the plot will listen for click events
-on the plot area and fire a "plotclick" event on the placeholder with
-a position and a nearby data item object as parameters. The coordinates
-are available both in the unit of the axes (not in pixels) and in
-global screen coordinates.
-
-Likewise, if you set "hoverable" to true, the plot will listen for
-mouse move events on the plot area and fire a "plothover" event with
-the same parameters as the "plotclick" event. If "autoHighlight" is
-true (the default), nearby data items are highlighted automatically.
-If needed, you can disable highlighting and control it yourself with
-the highlight/unhighlight plot methods described elsewhere.
-
-You can use "plotclick" and "plothover" events like this:
-
- $.plot($("#placeholder"), [ d ], { grid: { clickable: true } });
-
- $("#placeholder").bind("plotclick", function (event, pos, item) {
- alert("You clicked at " + pos.x + ", " + pos.y);
- // axis coordinates for other axes, if present, are in pos.x2, pos.x3, ...
- // if you need global screen coordinates, they are pos.pageX, pos.pageY
-
- if (item) {
- highlight(item.series, item.datapoint);
- alert("You clicked a point!");
- }
- });
-
-The item object in this example is either null or a nearby object on the form:
-
- item: {
- datapoint: the point, e.g. [0, 2]
- dataIndex: the index of the point in the data array
- series: the series object
- seriesIndex: the index of the series
- pageX, pageY: the global screen coordinates of the point
- }
-
-For instance, if you have specified the data like this
-
- $.plot($("#placeholder"), [ { label: "Foo", data: [[0, 10], [7, 3]] } ], ...);
-
-and the mouse is near the point (7, 3), "datapoint" is [7, 3],
-"dataIndex" will be 1, "series" is a normalized series object with
-among other things the "Foo" label in series.label and the color in
-series.color, and "seriesIndex" is 0. Note that plugins and options
-that transform the data can shift the indexes from what you specified
-in the original data array.
-
-If you use the above events to update some other information and want
-to clear out that info in case the mouse goes away, you'll probably
-also need to listen to "mouseout" events on the placeholder div.
-
-"mouseActiveRadius" specifies how far the mouse can be from an item
-and still activate it. If there are two or more points within this
-radius, Flot chooses the closest item. For bars, the top-most bar
-(from the latest specified data series) is chosen.
-
-If you want to disable interactivity for a specific data series, you
-can set "hoverable" and "clickable" to false in the options for that
-series, like this { data: [...], label: "Foo", clickable: false }.
-
-
-Specifying gradients
-====================
-
-A gradient is specified like this:
-
- { colors: [ color1, color2, ... ] }
-
-For instance, you might specify a background on the grid going from
-black to gray like this:
-
- grid: {
- backgroundColor: { colors: ["#000", "#999"] }
- }
-
-For the series you can specify the gradient as an object that
-specifies the scaling of the brightness and the opacity of the series
-color, e.g.
-
- { colors: [{ opacity: 0.8 }, { brightness: 0.6, opacity: 0.8 } ] }
-
-where the first color simply has its alpha scaled, whereas the second
-is also darkened. For instance, for bars the following makes the bars
-gradually disappear, without outline:
-
- bars: {
- show: true,
- lineWidth: 0,
- fill: true,
- fillColor: { colors: [ { opacity: 0.8 }, { opacity: 0.1 } ] }
- }
-
-Flot currently only supports vertical gradients drawn from top to
-bottom because that's what works with IE.
-
-
-Plot Methods
-------------
-
-The Plot object returned from the plot function has some methods you
-can call:
-
- - highlight(series, datapoint)
-
- Highlight a specific datapoint in the data series. You can either
- specify the actual objects, e.g. if you got them from a
- "plotclick" event, or you can specify the indices, e.g.
- highlight(1, 3) to highlight the fourth point in the second series
- (remember, zero-based indexing).
-
-
- - unhighlight(series, datapoint) or unhighlight()
-
- Remove the highlighting of the point, same parameters as
- highlight.
-
- If you call unhighlight with no parameters, e.g. as
- plot.unhighlight(), all current highlights are removed.
-
-
- - setData(data)
-
- You can use this to reset the data used. Note that axis scaling,
- ticks, legend etc. will not be recomputed (use setupGrid() to do
- that). You'll probably want to call draw() afterwards.
-
- You can use this function to speed up redrawing a small plot if
- you know that the axes won't change. Put in the new data with
- setData(newdata), call draw(), and you're good to go. Note that
- for large datasets, almost all the time is consumed in draw()
- plotting the data so in this case don't bother.
-
-
- - setupGrid()
-
- Recalculate and set axis scaling, ticks, legend etc.
-
- Note that because of the drawing model of the canvas, this
- function will immediately redraw (actually reinsert in the DOM)
- the labels and the legend, but not the actual tick lines because
- they're drawn on the canvas. You need to call draw() to get the
- canvas redrawn.
-
- - draw()
-
- Redraws the plot canvas.
-
- - triggerRedrawOverlay()
-
- Schedules an update of an overlay canvas used for drawing
- interactive things like a selection and point highlights. This
- is mostly useful for writing plugins. The redraw doesn't happen
- immediately, instead a timer is set to catch multiple successive
- redraws (e.g. from a mousemove). You can get to the overlay by
- setting up a drawOverlay hook.
-
- - width()/height()
-
- Gets the width and height of the plotting area inside the grid.
- This is smaller than the canvas or placeholder dimensions as some
- extra space is needed (e.g. for labels).
-
- - offset()
-
- Returns the offset of the plotting area inside the grid relative
- to the document, useful for instance for calculating mouse
- positions (event.pageX/Y minus this offset is the pixel position
- inside the plot).
-
- - pointOffset({ x: xpos, y: ypos })
-
- Returns the calculated offset of the data point at (x, y) in data
- space within the placeholder div. If you are working with multiple axes, you
- can specify the x and y axis references, e.g.
-
- o = pointOffset({ x: xpos, y: ypos, xaxis: 2, yaxis: 3 })
- // o.left and o.top now contains the offset within the div
-
- - resize()
-
- Tells Flot to resize the drawing canvas to the size of the
- placeholder. You need to run setupGrid() and draw() afterwards as
- canvas resizing is a destructive operation. This is used
- internally by the resize plugin.
-
- - shutdown()
-
- Cleans up any event handlers Flot has currently registered. This
- is used internally.
-
-
-There are also some members that let you peek inside the internal
-workings of Flot which is useful in some cases. Note that if you change
-something in the objects returned, you're changing the objects used by
-Flot to keep track of its state, so be careful.
-
- - getData()
-
- Returns an array of the data series currently used in normalized
- form with missing settings filled in according to the global
- options. So for instance to find out what color Flot has assigned
- to the data series, you could do this:
-
- var series = plot.getData();
- for (var i = 0; i < series.length; ++i)
- alert(series[i].color);
-
- A notable other interesting field besides color is datapoints
- which has a field "points" with the normalized data points in a
- flat array (the field "pointsize" is the increment in the flat
- array to get to the next point so for a dataset consisting only of
- (x,y) pairs it would be 2).
-
- - getAxes()
-
- Gets an object with the axes. The axes are returned as the
- attributes of the object, so for instance getAxes().xaxis is the
- x axis.
-
- Various things are stuffed inside an axis object, e.g. you could
- use getAxes().xaxis.ticks to find out what the ticks are for the
- xaxis. Two other useful attributes are p2c and c2p, functions for
- transforming from data point space to the canvas plot space and
- back. Both returns values that are offset with the plot offset.
- Check the Flot source code for the complete set of attributes (or
- output an axis with console.log() and inspect it).
-
- With multiple axes, the extra axes are returned as x2axis, x3axis,
- etc., e.g. getAxes().y2axis is the second y axis. You can check
- y2axis.used to see whether the axis is associated with any data
- points and y2axis.show to see if it is currently shown.
-
- - getPlaceholder()
-
- Returns placeholder that the plot was put into. This can be useful
- for plugins for adding DOM elements or firing events.
-
- - getCanvas()
-
- Returns the canvas used for drawing in case you need to hack on it
- yourself. You'll probably need to get the plot offset too.
-
- - getPlotOffset()
-
- Gets the offset that the grid has within the canvas as an object
- with distances from the canvas edges as "left", "right", "top",
- "bottom". I.e., if you draw a circle on the canvas with the center
- placed at (left, top), its center will be at the top-most, left
- corner of the grid.
-
- - getOptions()
-
- Gets the options for the plot, normalized, with default values
- filled in. You get a reference to actual values used by Flot, so
- if you modify the values in here, Flot will use the new values.
- If you change something, you probably have to call draw() or
- setupGrid() or triggerRedrawOverlay() to see the change.
-
-
-Hooks
-=====
-
-In addition to the public methods, the Plot object also has some hooks
-that can be used to modify the plotting process. You can install a
-callback function at various points in the process, the function then
-gets access to the internal data structures in Flot.
-
-Here's an overview of the phases Flot goes through:
-
- 1. Plugin initialization, parsing options
-
- 2. Constructing the canvases used for drawing
-
- 3. Set data: parsing data specification, calculating colors,
- copying raw data points into internal format,
- normalizing them, finding max/min for axis auto-scaling
-
- 4. Grid setup: calculating axis spacing, ticks, inserting tick
- labels, the legend
-
- 5. Draw: drawing the grid, drawing each of the series in turn
-
- 6. Setting up event handling for interactive features
-
- 7. Responding to events, if any
-
- 8. Shutdown: this mostly happens in case a plot is overwritten
-
-Each hook is simply a function which is put in the appropriate array.
-You can add them through the "hooks" option, and they are also available
-after the plot is constructed as the "hooks" attribute on the returned
-plot object, e.g.
-
- // define a simple draw hook
- function hellohook(plot, canvascontext) { alert("hello!"); };
-
- // pass it in, in an array since we might want to specify several
- var plot = $.plot(placeholder, data, { hooks: { draw: [hellohook] } });
-
- // we can now find it again in plot.hooks.draw[0] unless a plugin
- // has added other hooks
-
-The available hooks are described below. All hook callbacks get the
-plot object as first parameter. You can find some examples of defined
-hooks in the plugins bundled with Flot.
-
- - processOptions [phase 1]
-
- function(plot, options)
-
- Called after Flot has parsed and merged options. Useful in the
- instance where customizations beyond simple merging of default
- values is needed. A plugin might use it to detect that it has been
- enabled and then turn on or off other options.
-
-
- - processRawData [phase 3]
-
- function(plot, series, data, datapoints)
-
- Called before Flot copies and normalizes the raw data for the given
- series. If the function fills in datapoints.points with normalized
- points and sets datapoints.pointsize to the size of the points,
- Flot will skip the copying/normalization step for this series.
-
- In any case, you might be interested in setting datapoints.format,
- an array of objects for specifying how a point is normalized and
- how it interferes with axis scaling.
-
- The default format array for points is something along the lines of:
-
- [
- { x: true, number: true, required: true },
- { y: true, number: true, required: true }
- ]
-
- The first object means that for the first coordinate it should be
- taken into account when scaling the x axis, that it must be a
- number, and that it is required - so if it is null or cannot be
- converted to a number, the whole point will be zeroed out with
- nulls. Beyond these you can also specify "defaultValue", a value to
- use if the coordinate is null. This is for instance handy for bars
- where one can omit the third coordinate (the bottom of the bar)
- which then defaults to 0.
-
-
- - processDatapoints [phase 3]
-
- function(plot, series, datapoints)
-
- Called after normalization of the given series but before finding
- min/max of the data points. This hook is useful for implementing data
- transformations. "datapoints" contains the normalized data points in
- a flat array as datapoints.points with the size of a single point
- given in datapoints.pointsize. Here's a simple transform that
- multiplies all y coordinates by 2:
-
- function multiply(plot, series, datapoints) {
- var points = datapoints.points, ps = datapoints.pointsize;
- for (var i = 0; i < points.length; i += ps)
- points[i + 1] *= 2;
- }
-
- Note that you must leave datapoints in a good condition as Flot
- doesn't check it or do any normalization on it afterwards.
-
-
- - drawSeries [phase 5]
-
- function(plot, canvascontext, series)
-
- Hook for custom drawing of a single series. Called just before the
- standard drawing routine has been called in the loop that draws
- each series.
-
-
- - draw [phase 5]
-
- function(plot, canvascontext)
-
- Hook for drawing on the canvas. Called after the grid is drawn
- (unless it's disabled or grid.aboveData is set) and the series have
- been plotted (in case any points, lines or bars have been turned
- on). For examples of how to draw things, look at the source code.
-
-
- - bindEvents [phase 6]
-
- function(plot, eventHolder)
-
- Called after Flot has setup its event handlers. Should set any
- necessary event handlers on eventHolder, a jQuery object with the
- canvas, e.g.
-
- function (plot, eventHolder) {
- eventHolder.mousedown(function (e) {
- alert("You pressed the mouse at " + e.pageX + " " + e.pageY);
- });
- }
-
- Interesting events include click, mousemove, mouseup/down. You can
- use all jQuery events. Usually, the event handlers will update the
- state by drawing something (add a drawOverlay hook and call
- triggerRedrawOverlay) or firing an externally visible event for
- user code. See the crosshair plugin for an example.
-
- Currently, eventHolder actually contains both the static canvas
- used for the plot itself and the overlay canvas used for
- interactive features because some versions of IE get the stacking
- order wrong. The hook only gets one event, though (either for the
- overlay or for the static canvas).
-
- Note that custom plot events generated by Flot are not generated on
- eventHolder, but on the div placeholder supplied as the first
- argument to the plot call. You can get that with
- plot.getPlaceholder() - that's probably also the one you should use
- if you need to fire a custom event.
-
-
- - drawOverlay [phase 7]
-
- function (plot, canvascontext)
-
- The drawOverlay hook is used for interactive things that need a
- canvas to draw on. The model currently used by Flot works the way
- that an extra overlay canvas is positioned on top of the static
- canvas. This overlay is cleared and then completely redrawn
- whenever something interesting happens. This hook is called when
- the overlay canvas is to be redrawn.
-
- "canvascontext" is the 2D context of the overlay canvas. You can
- use this to draw things. You'll most likely need some of the
- metrics computed by Flot, e.g. plot.width()/plot.height(). See the
- crosshair plugin for an example.
-
-
- - shutdown [phase 8]
-
- function (plot, eventHolder)
-
- Run when plot.shutdown() is called, which usually only happens in
- case a plot is overwritten by a new plot. If you're writing a
- plugin that adds extra DOM elements or event handlers, you should
- add a callback to clean up after you. Take a look at the section in
- PLUGINS.txt for more info.
-
-
-Plugins
--------
-
-Plugins extend the functionality of Flot. To use a plugin, simply
-include its Javascript file after Flot in the HTML page.
-
-If you're worried about download size/latency, you can concatenate all
-the plugins you use, and Flot itself for that matter, into one big file
-(make sure you get the order right), then optionally run it through a
-Javascript minifier such as YUI Compressor.
-
-Here's a brief explanation of how the plugin plumbings work:
-
-Each plugin registers itself in the global array $.plot.plugins. When
-you make a new plot object with $.plot, Flot goes through this array
-calling the "init" function of each plugin and merging default options
-from the "option" attribute of the plugin. The init function gets a
-reference to the plot object created and uses this to register hooks
-and add new public methods if needed.
-
-See the PLUGINS.txt file for details on how to write a plugin. As the
-above description hints, it's actually pretty easy.
-
-
-Version number
---------------
-
-The version number of Flot is available in $.plot.version.
Removed: zorg/trunk/lnt/lnt/server/ui/static/flot/FAQ.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/static/flot/FAQ.txt?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/static/flot/FAQ.txt (original)
+++ zorg/trunk/lnt/lnt/server/ui/static/flot/FAQ.txt (removed)
@@ -1,76 +0,0 @@
-Frequently asked questions
---------------------------
-
-Q: How much data can Flot cope with?
-
-A: Flot will happily draw everything you send to it so the answer
-depends on the browser. The excanvas emulation used for IE (built with
-VML) makes IE by far the slowest browser so be sure to test with that
-if IE users are in your target group.
-
-1000 points is not a problem, but as soon as you start having more
-points than the pixel width, you should probably start thinking about
-downsampling/aggregation as this is near the resolution limit of the
-chart anyway. If you downsample server-side, you also save bandwidth.
-
-
-Q: Flot isn't working when I'm using JSON data as source!
-
-A: Actually, Flot loves JSON data, you just got the format wrong.
-Double check that you're not inputting strings instead of numbers,
-like [["0", "-2.13"], ["5", "4.3"]]. This is most common mistake, and
-the error might not show up immediately because Javascript can do some
-conversion automatically.
-
-
-Q: Can I export the graph?
-
-A: This is a limitation of the canvas technology. There's a hook in
-the canvas object for getting an image out, but you won't get the tick
-labels. And it's not likely to be supported by IE. At this point, your
-best bet is probably taking a screenshot, e.g. with PrtScn.
-
-
-Q: The bars are all tiny in time mode?
-
-A: It's not really possible to determine the bar width automatically.
-So you have to set the width with the barWidth option which is NOT in
-pixels, but in the units of the x axis (or the y axis for horizontal
-bars). For time mode that's milliseconds so the default value of 1
-makes the bars 1 millisecond wide.
-
-
-Q: Can I use Flot with libraries like Mootools or Prototype?
-
-A: Yes, Flot supports it out of the box and it's easy! Just use jQuery
-instead of $, e.g. call jQuery.plot instead of $.plot and use
-jQuery(something) instead of $(something). As a convenience, you can
-put in a DOM element for the graph placeholder where the examples and
-the API documentation are using jQuery objects.
-
-Depending on how you include jQuery, you may have to add one line of
-code to prevent jQuery from overwriting functions from the other
-libraries, see the documentation in jQuery ("Using jQuery with other
-libraries") for details.
-
-
-Q: Flot doesn't work with [insert name of Javascript UI framework]!
-
-A: The only non-standard thing used by Flot is the canvas tag;
-otherwise it is simply a series of absolute positioned divs within the
-placeholder tag you put in. If this is not working, it's probably
-because the framework you're using is doing something weird with the
-DOM, or you're using it the wrong way.
-
-A common problem is that there's display:none on a container until the
-user does something. Many tab widgets work this way, and there's
-nothing wrong with it - you just can't call Flot inside a display:none
-container as explained in the README so you need to hold off the Flot
-call until the container is actually displayed (or use
-visibility:hidden instead of display:none or move the container
-off-screen).
-
-If you find there's a specific thing we can do to Flot to help, feel
-free to submit a bug report. Otherwise, you're welcome to ask for help
-on the forum/mailing list, but please don't submit a bug report to
-Flot.
Removed: zorg/trunk/lnt/lnt/server/ui/static/flot/LICENSE.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/static/flot/LICENSE.txt?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/static/flot/LICENSE.txt (original)
+++ zorg/trunk/lnt/lnt/server/ui/static/flot/LICENSE.txt (removed)
@@ -1,22 +0,0 @@
-Copyright (c) 2007-2009 IOLA and Ole Laursen
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
Removed: zorg/trunk/lnt/lnt/server/ui/static/flot/Makefile
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/static/flot/Makefile?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/static/flot/Makefile (original)
+++ zorg/trunk/lnt/lnt/server/ui/static/flot/Makefile (removed)
@@ -1,9 +0,0 @@
-# Makefile for generating minified files
-
-.PHONY: all
-
-# we cheat and process all .js files instead of an exhaustive list
-all: $(patsubst %.js,%.min.js,$(filter-out %.min.js,$(wildcard *.js)))
-
-%.min.js: %.js
- yui-compressor $< -o $@
Removed: zorg/trunk/lnt/lnt/server/ui/static/flot/NEWS.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/static/flot/NEWS.txt?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/static/flot/NEWS.txt (original)
+++ zorg/trunk/lnt/lnt/server/ui/static/flot/NEWS.txt (removed)
@@ -1,508 +0,0 @@
-Flot 0.7
---------
-
-API changes:
-
-Multiple axes support. Code using dual axes should be changed from
-using x2axis/y2axis in the options to using an array (although
-backwards-compatibility hooks are in place). For instance,
-
- {
- xaxis: { ... }, x2axis: { ... },
- yaxis: { ... }, y2axis: { ... }
- }
-
-becomes
-
- {
- xaxes: [ { ... }, { ... } ],
- yaxes: [ { ... }, { ... } ]
- }
-
-Note that if you're just using one axis, continue to use the
-xaxis/yaxis directly (it now sets the default settings for the
-arrays). Plugins touching the axes must be ported to take the extra
-axes into account, check the source to see some examples.
-
-A related change is that the visibility of axes is now auto-detected.
-So if you were relying on an axis to show up even without any data in
-the chart, you now need to set the axis "show" option explicitly.
-
-"tickColor" on the grid options is now deprecated in favour of a
-corresponding option on the axes, so { grid: { tickColor: "#000" }}
-becomes { xaxis: { tickColor: "#000"}, yaxis: { tickColor: "#000"} },
-but if you just configure a base color Flot will now autogenerate a
-tick color by adding transparency. Backwards-compatibility hooks are
-in place.
-
-Final note: now that IE 9 is coming out with canvas support, you may
-want to adapt the excanvas include to skip loading it in IE 9 (the
-examples have been adapted thanks to Ryley Breiddal). An alternative
-to excanvas using Flash has also surfaced, if your graphs are slow in
-IE, you may want to give it a spin:
-
- http://code.google.com/p/flashcanvas/
-
-
-Changes:
-
-- Support for specifying a bottom for each point for line charts when
- filling them, this means that an arbitrary bottom can be used
- instead of just the x axis (based on patches patiently provided by
- Roman V. Prikhodchenko).
-- New fillbetween plugin that can compute a bottom for a series from
- another series, useful for filling areas between lines (see new
- example percentiles.html for a use case).
-- More predictable handling of gaps for the stacking plugin, now all
- undefined ranges are skipped.
-- Stacking plugin can stack horizontal bar charts.
-- Navigate plugin now redraws the plot while panning instead of only
- after the fact (can be disabled by setting the pan.frameRate option
- to null), raised by lastthemy (issue 235).
-- Date formatter now accepts %0m and %0d to get a zero-padded month or
- day (issue raised by Maximillian Dornseif).
-- Revamped internals to support an unlimited number of axes, not just
- dual (sponsored by Flight Data Services,
- www.flightdataservices.com).
-- New setting on axes, "tickLength", to control the size of ticks or
- turn them off without turning off the labels.
-- Axis labels are now put in container divs with classes, for instance
- labels in the x axes can be reached via ".xAxis .tickLabel".
-- Support for setting the color of an axis (sponsored by Flight Data
- Services, www.flightdataservices.com).
-- Tick color is now auto-generated as the base color with some
- transparency (unless you override it).
-- Support for aligning ticks in the axes with "alignTicksWithAxis" to
- ensure that they appear next to each other rather than in between,
- at the expense of possibly awkward tick steps (sponsored by Flight
- Data Services, www.flightdataservices.com).
-- Support for customizing the point type through a callback when
- plotting points and new symbol plugin with some predefined point
- types (sponsored by Utility Data Corporation).
-- Resize plugin for automatically redrawing when the placeholder
- changes size, e.g. on window resizes (sponsored by Novus Partners).
- A resize() method has been added to plot object facilitate this.
-- Support Infinity/-Infinity for plotting asymptotes by hacking it
- into +/-Number.MAX_VALUE (reported by rabaea.mircea).
-- Support for restricting navigate plugin to not pan/zoom an axis (based
- on patch by kkaefer).
-- Support for providing the drag cursor for the navigate plugin as an
- option (based on patch by Kelly T. Moore).
-- Options for controlling whether an axis is shown or not (suggestion
- by Timo Tuominen) and whether to reserve space for it even if it
- isn't shown.
-- New attribute $.plot.version with the Flot version as a string.
-- The version comment is now included in the minified jquery.flot.min.js.
-- New options.grid.minBorderMargin for adjusting the minimum margin
- provided around the border (based on patch by corani, issue 188).
-- Refactor replot behaviour so Flot tries to reuse the existing
- canvas, adding shutdown() methods to the plot (based on patch by
- Ryley Breiddal, issue 269). This prevents a memory leak in Chrome
- and hopefully makes replotting faster for those who are using $.plot
- instead of .setData()/.draw(). Also update jQuery to 1.5.1 to
- prevent IE leaks fixed in jQuery.
-- New real-time line chart example.
-
-- New hooks: drawSeries, shutdown
-
-Bug fixes:
-
-- Fixed problem with findNearbyItem and bars on top of each other
- (reported by ragingchikn, issue 242).
-- Fixed problem with ticks and the border (based on patch from
- ultimatehustler69, issue 236).
-- Fixed problem with plugins adding options to the series objects.
-- Fixed a problem introduced in 0.6 with specifying a gradient with {
- brightness: x, opacity: y }.
-- Don't use $.browser.msie, check for getContext on the created canvas
- element instead and try to use excanvas if it's not found (fixes IE
- 9 compatibility).
-- highlight(s, index) was looking up the point in the original s.data
- instead of in the computed datapoints array, which breaks with
- plugins that modify the datapoints (such as the stacking plugin).
- Issue 316 reported by curlypaul924.
-- More robust handling of axis from data passed in from getData()
- (problem reported by Morgan).
-- Fixed problem with turning off bar outline (issue 253, fix by Jordi
- Castells).
-- Check the selection passed into setSelection in the selection
- plugin, to guard against errors when synchronizing plots (fix by Lau
- Bech Lauritzen).
-- Fix bug in crosshair code with mouseout resetting the crosshair even
- if it is locked (fix by Lau Bech Lauritzen and Banko Adam).
-- Fix bug with points plotting using line width from lines rather than
- points.
-- Fix bug with passing non-array 0 data (for plugins that don't expect
- arrays, patch by vpapp1).
-- Fix errors in JSON in examples so they work with jQuery 1.4.2
- (fix reported by honestbleeps, issue 357).
-- Fix bug with tooltip in interacting.html, this makes the tooltip
- much smoother (fix by bdkahn). Fix related bug inside highlighting
- handler in Flot.
-- Use closure trick to make inline colorhelpers plugin respect
- jQuery.noConflict(true), renaming the global jQuery object (reported
- by Nick Stielau).
-- Listen for mouseleave events and fire a plothover event with empty
- item when it occurs to drop highlights when the mouse leaves the
- plot (reported by by outspirit).
-- Fix bug with using aboveData with a background (reported by
- amitayd).
-- Fix possible excanvas leak (report and suggested fix by tom9729).
-- Fix bug with backwards compatibility for shadowSize = 0 (report and
- suggested fix by aspinak).
-- Adapt examples to skip loading excanvas (fix by Ryley Breiddal).
-- Fix bug that prevent a simple f(x) = -x transform from working
- correctly (fix by Mike, issue 263).
-- Fix bug in restoring cursor in navigate plugin (reported by Matteo
- Gattanini, issue 395).
-- Fix bug in picking items when transform/inverseTransform is in use
- (reported by Ofri Raviv, and patches and analysis by Jan and Tom
- Paton, issue 334 and 467).
-- Fix problem with unaligned ticks and hover/click events caused by
- padding on the placeholder by hardcoding the placeholder padding to
- 0 (reported by adityadineshsaxena, Matt Sommer, Daniel Atos and some
- other people, issue 301).
-- Update colorhelpers plugin to avoid dying when trying to parse an
- invalid string (reported by cadavor, issue 483).
-
-
-Flot 0.6
---------
-
-API changes:
-
-1. Selection support has been moved to a plugin. Thus if you're
-passing selection: { mode: something }, you MUST include the file
-jquery.flot.selection.js after jquery.flot.js. This reduces the size
-of base Flot and makes it easier to customize the selection as well as
-improving code clarity. The change is based on a patch from andershol.
-
-2. In the global options specified in the $.plot command,
-"lines", "points", "bars" and "shadowSize" have been moved to a
-sub-object called "series", i.e.
-
- $.plot(placeholder, data, { lines: { show: true }})
-
-should be changed to
-
- $.plot(placeholder, data, { series: { lines: { show: true }}})
-
-All future series-specific options will go into this sub-object to
-simplify plugin writing. Backward-compatibility code is in place, so
-old code should not break.
-
-3. "plothover" no longer provides the original data point, but instead
-a normalized one, since there may be no corresponding original point.
-
-4. Due to a bug in previous versions of jQuery, you now need at least
-jQuery 1.2.6. But if you can, try jQuery 1.3.2 as it got some
-improvements in event handling speed.
-
-
-Changes:
-
-- Added support for disabling interactivity for specific data series
- (request from Ronald Schouten and Steve Upton).
-
-- Flot now calls $() on the placeholder and optional legend container
- passed in so you can specify DOM elements or CSS expressions to make
- it easier to use Flot with libraries like Prototype or Mootools or
- through raw JSON from Ajax responses.
-
-- A new "plotselecting" event is now emitted while the user is making
- a selection.
-
-- The "plothover" event is now emitted immediately instead of at most
- 10 times per second, you'll have to put in a setTimeout yourself if
- you're doing something really expensive on this event.
-
-- The built-in date formatter can now be accessed as
- $.plot.formatDate(...) (suggestion by Matt Manela) and even
- replaced.
-
-- Added "borderColor" option to the grid (patch from Amaury Chamayou
- and patch from Mike R. Williamson).
-
-- Added support for gradient backgrounds for the grid, take a look at
- the "setting options" example (based on patch from Amaury Chamayou,
- issue 90).
-
-- Gradient bars (suggestion by stefpet).
-
-- Added a "plotunselected" event which is triggered when the selection
- is removed, see "selection" example (suggestion by Meda Ugo);
-
-- The option legend.margin can now specify horizontal and vertical
- margins independently (suggestion by someone who's annoyed).
-
-- Data passed into Flot is now copied to a new canonical format to
- enable further processing before it hits the drawing routines. As a
- side-effect, this should make Flot more robust in the face of bad
- data (and fixes issue 112).
-
-- Step-wise charting: line charts have a new option "steps" that when
- set to true connects the points with horizontal/vertical steps
- instead of diagonal lines.
-
-- The legend labelFormatter now passes the series in addition to just
- the label (suggestion by Vincent Lemeltier).
-
-- Horizontal bars (based on patch by Jason LeBrun).
-
-- Support for partial bars by specifying a third coordinate, i.e. they
- don't have to start from the axis. This can be used to make stacked
- bars.
-
-- New option to disable the (grid.show).
-
-- Added pointOffset method for converting a point in data space to an
- offset within the placeholder.
-
-- Plugin system: register an init method in the $.flot.plugins array
- to get started, see PLUGINS.txt for details on how to write plugins
- (it's easy). There are also some extra methods to enable access to
- internal state.
-
-- Hooks: you can register functions that are called while Flot is
- crunching the data and doing the plot. This can be used to modify
- Flot without changing the source, useful for writing plugins. Some
- hooks are defined, more are likely to come.
-
-- Threshold plugin: you can set a threshold and a color, and the data
- points below that threshold will then get the color. Useful for
- marking data below 0, for instance.
-
-- Stack plugin: you can specify a stack key for each series to have
- them summed. This is useful for drawing additive/cumulative graphs
- with bars and (currently unfilled) lines.
-
-- Crosshairs plugin: trace the mouse position on the axes, enable with
- crosshair: { mode: "x"} (see the new tracking example for a use).
-
-- Image plugin: plot prerendered images.
-
-- Navigation plugin for panning and zooming a plot.
-
-- More configurable grid.
-
-- Axis transformation support, useful for non-linear plots, e.g. log
- axes and compressed time axes (like omitting weekends).
-
-- Support for twelve-hour date formatting (patch by Forrest Aldridge).
-
-- The color parsing code in Flot has been cleaned up and split out so
- it's now available as a separate jQuery plugin. It's included inline
- in the Flot source to make dependency managing easier. This also
- makes it really easy to use the color helpers in Flot plugins.
-
-Bug fixes:
-
-- Fixed two corner-case bugs when drawing filled curves (report and
- analysis by Joshua Varner).
-- Fix auto-adjustment code when setting min to 0 for an axis where the
- dataset is completely flat on that axis (report by chovy).
-- Fixed a bug with passing in data from getData to setData when the
- secondary axes are used (issue 65, reported by nperelman).
-- Fixed so that it is possible to turn lines off when no other chart
- type is shown (based on problem reported by Glenn Vanderburg), and
- fixed so that setting lineWidth to 0 also hides the shadow (based on
- problem reported by Sergio Nunes).
-- Updated mousemove position expression to the latest from jQuery (bug
- reported by meyuchas).
-- Use CSS borders instead of background in legend (fix printing issue 25
- and 45).
-- Explicitly convert axis min/max to numbers.
-- Fixed a bug with drawing marking lines with different colors
- (reported by Khurram).
-- Fixed a bug with returning y2 values in the selection event (fix
- by exists, issue 75).
-- Only set position relative on placeholder if it hasn't already a
- position different from static (reported by kyberneticist, issue 95).
-- Don't round markings to prevent sub-pixel problems (reported by Dan
- Lipsitt).
-- Make the grid border act similarly to a regular CSS border, i.e.
- prevent it from overlapping the plot itself. This also fixes a
- problem with anti-aliasing when the width is 1 pixel (reported by
- Anthony Ettinger).
-- Imported version 3 of excanvas and fixed two issues with the newer
- version. Hopefully, this will make Flot work with IE8 (nudge by
- Fabien Menager, further analysis by Booink, issue 133).
-- Changed the shadow code for lines to hopefully look a bit better
- with vertical lines.
-- Round tick positions to avoid possible problems with fractions
- (suggestion by Fred, issue 130).
-- Made the heuristic for determining how many ticks to aim for a bit
- smarter.
-- Fix for uneven axis margins (report and patch by Paul Kienzle) and
- snapping to ticks (concurrent report and patch by lifthrasiir).
-- Fixed bug with slicing in findNearbyItems (patch by zollman).
-- Make heuristic for x axis label widths more dynamic (patch by
- rickinhethuis).
-- Make sure points on top take precedence when finding nearby points
- when hovering (reported by didroe, issue 224).
-
-Flot 0.5
---------
-
-Backwards API change summary: Timestamps are now in UTC. Also
-"selected" event -> becomes "plotselected" with new data, the
-parameters for setSelection are now different (but backwards
-compatibility hooks are in place), coloredAreas becomes markings with
-a new interface (but backwards compatibility hooks are in place).
-
-
-Interactivity: added a new "plothover" event and this and the
-"plotclick" event now returns the closest data item (based on patch by
-/david, patch by Mark Byers for bar support). See the revamped
-"interacting with the data" example for some hints on what you can do.
-
-Highlighting: you can now highlight points and datapoints are
-autohighlighted when you hover over them (if hovering is turned on).
-
-Support for dual axis has been added (based on patch by someone who's
-annoyed and /david). For each data series you can specify which axes
-it belongs to, and there are two more axes, x2axis and y2axis, to
-customize. This affects the "selected" event which has been renamed to
-"plotselected" and spews out { xaxis: { from: -10, to: 20 } ... },
-setSelection in which the parameters are on a new form (backwards
-compatible hooks are in place so old code shouldn't break) and
-markings (formerly coloredAreas).
-
-Timestamps in time mode are now displayed according to
-UTC instead of the time zone of the visitor. This affects the way the
-timestamps should be input; you'll probably have to offset the
-timestamps according to your local time zone. It also affects any
-custom date handling code (which basically now should use the
-equivalent UTC date mehods, e.g. .setUTCMonth() instead of
-.setMonth().
-
-Added support for specifying the size of tick labels (axis.labelWidth,
-axis.labelHeight). Useful for specifying a max label size to keep
-multiple plots aligned.
-
-Markings, previously coloredAreas, are now specified as ranges on the
-axes, like { xaxis: { from: 0, to: 10 }}. Furthermore with markings
-you can now draw horizontal/vertical lines by setting from and to to
-the same coordinate (idea from line support patch by by Ryan Funduk).
-
-The "fill" option can now be a number that specifies the opacity of
-the fill.
-
-You can now specify a coordinate as null (like [2, null]) and Flot
-will take the other coordinate into account when scaling the axes
-(based on patch by joebno).
-
-New option for bars "align". Set it to "center" to center the bars on
-the value they represent.
-
-setSelection now takes a second parameter which you can use to prevent
-the method from firing the "plotselected" handler.
-
-Using the "container" option in legend now overwrites the container
-element instead of just appending to it (fixes infinite legend bug,
-reported by several people, fix by Brad Dewey).
-
-Fixed a bug in calculating spacing around the plot (reported by
-timothytoe). Fixed a bug in finding max values for all-negative data
-sets. Prevent the possibility of eternal looping in tick calculations.
-Fixed a bug when borderWidth is set to 0 (reported by
-Rob/sanchothefat). Fixed a bug with drawing bars extending below 0
-(reported by James Hewitt, patch by Ryan Funduk). Fixed a
-bug with line widths of bars (reported by MikeM). Fixed a bug with
-'nw' and 'sw' legend positions. Improved the handling of axis
-auto-scaling with bars. Fixed a bug with multi-line x-axis tick
-labels (reported by Luca Ciano). IE-fix help by Savage Zhang.
-
-
-Flot 0.4
---------
-
-API changes: deprecated axis.noTicks in favor of just specifying the
-number as axis.ticks. So "xaxis: { noTicks: 10 }" becomes
-"xaxis: { ticks: 10 }"
-
-Time series support. Specify axis.mode: "time", put in Javascript
-timestamps as data, and Flot will automatically spit out sensible
-ticks. Take a look at the two new examples. The format can be
-customized with axis.timeformat and axis.monthNames, or if that fails
-with axis.tickFormatter.
-
-Support for colored background areas via grid.coloredAreas. Specify an
-array of { x1, y1, x2, y2 } objects or a function that returns these
-given { xmin, xmax, ymin, ymax }.
-
-More members on the plot object (report by Chris Davies and others).
-"getData" for inspecting the assigned settings on data series (e.g.
-color) and "setData", "setupGrid" and "draw" for updating the contents
-without a total replot.
-
-The default number of ticks to aim for is now dependent on the size of
-the plot in pixels. Support for customizing tick interval sizes
-directly with axis.minTickSize and axis.tickSize.
-
-Cleaned up the automatic axis scaling algorithm and fixed how it
-interacts with ticks. Also fixed a couple of tick-related corner case
-bugs (one reported by mainstreetmark, another reported by timothytoe).
-
-The option axis.tickFormatter now takes a function with two
-parameters, the second parameter is an optional object with
-information about the axis. It has min, max, tickDecimals, tickSize.
-
-Added support for segmented lines (based on patch from Michael
-MacDonald) and for ignoring null and bad values (suggestion from Nick
-Konidaris and joshwaihi).
-
-Added support for changing the border width (joebno and safoo).
-Label colors can be changed via CSS by selecting the tickLabel class.
-
-Fixed a bug in handling single-item bar series (reported by Emil
-Filipov). Fixed erratic behaviour when interacting with the plot
-with IE 7 (reported by Lau Bech Lauritzen). Prevent IE/Safari text
-selection when selecting stuff on the canvas.
-
-
-
-Flot 0.3
---------
-
-This is mostly a quick-fix release because jquery.js wasn't included
-in the previous zip/tarball.
-
-Support clicking on the plot. Turn it on with grid: { clickable: true },
-then you get a "plotclick" event on the graph placeholder with the
-position in units of the plot.
-
-Fixed a bug in dealing with data where min = max, thanks to Michael
-Messinides.
-
-Include jquery.js in the zip/tarball.
-
-
-Flot 0.2
---------
-
-Added support for putting a background behind the default legend. The
-default is the partly transparent background color. Added
-backgroundColor and backgroundOpacity to the legend options to control
-this.
-
-The ticks options can now be a callback function that takes one
-parameter, an object with the attributes min and max. The function
-should return a ticks array.
-
-Added labelFormatter option in legend, useful for turning the legend
-labels into links.
-
-Fixed a couple of bugs.
-
-The API should now be fully documented.
-
-Patch from Guy Fraser to make parts of the code smaller.
-
-API changes: Moved labelMargin option to grid from x/yaxis.
-
-
-Flot 0.1
---------
-
-First public release.
Removed: zorg/trunk/lnt/lnt/server/ui/static/flot/PLUGINS.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/static/flot/PLUGINS.txt?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/static/flot/PLUGINS.txt (original)
+++ zorg/trunk/lnt/lnt/server/ui/static/flot/PLUGINS.txt (removed)
@@ -1,137 +0,0 @@
-Writing plugins
----------------
-
-All you need to do to make a new plugin is creating an init function
-and a set of options (if needed), stuffing it into an object and
-putting it in the $.plot.plugins array. For example:
-
- function myCoolPluginInit(plot) {
- plot.coolstring = "Hello!";
- };
-
- $.plot.plugins.push({ init: myCoolPluginInit, options: { ... } });
-
- // if $.plot is called, it will return a plot object with the
- // attribute "coolstring"
-
-Now, given that the plugin might run in many different places, it's
-a good idea to avoid leaking names. The usual trick here is wrap the
-above lines in an anonymous function which is called immediately, like
-this: (function () { inner code ... })(). To make it even more robust
-in case $ is not bound to jQuery but some other Javascript library, we
-can write it as
-
- (function ($) {
- // plugin definition
- // ...
- })(jQuery);
-
-There's a complete example below, but you should also check out the
-plugins bundled with Flot.
-
-
-Complete example
-----------------
-
-Here is a simple debug plugin which alerts each of the series in the
-plot. It has a single option that control whether it is enabled and
-how much info to output:
-
- (function ($) {
- function init(plot) {
- var debugLevel = 1;
-
- function checkDebugEnabled(plot, options) {
- if (options.debug) {
- debugLevel = options.debug;
-
- plot.hooks.processDatapoints.push(alertSeries);
- }
- }
-
- function alertSeries(plot, series, datapoints) {
- var msg = "series " + series.label;
- if (debugLevel > 1)
- msg += " with " + series.data.length + " points";
- alert(msg);
- }
-
- plot.hooks.processOptions.push(checkDebugEnabled);
- }
-
- var options = { debug: 0 };
-
- $.plot.plugins.push({
- init: init,
- options: options,
- name: "simpledebug",
- version: "0.1"
- });
- })(jQuery);
-
-We also define "name" and "version". It's not used by Flot, but might
-be helpful for other plugins in resolving dependencies.
-
-Put the above in a file named "jquery.flot.debug.js", include it in an
-HTML page and then it can be used with:
-
- $.plot($("#placeholder"), [...], { debug: 2 });
-
-This simple plugin illustrates a couple of points:
-
- - It uses the anonymous function trick to avoid name pollution.
- - It can be enabled/disabled through an option.
- - Variables in the init function can be used to store plot-specific
- state between the hooks.
-
-The two last points are important because there may be multiple plots
-on the same page, and you'd want to make sure they are not mixed up.
-
-
-Shutting down a plugin
-----------------------
-
-Each plot object has a shutdown hook which is run when plot.shutdown()
-is called. This usually mostly happens in case another plot is made on
-top of an existing one.
-
-The purpose of the hook is to give you a chance to unbind any event
-handlers you've registered and remove any extra DOM things you've
-inserted.
-
-The problem with event handlers is that you can have registered a
-handler which is run in some point in the future, e.g. with
-setTimeout(). Meanwhile, the plot may have been shutdown and removed,
-but because your event handler is still referencing it, it can't be
-garbage collected yet, and worse, if your handler eventually runs, it
-may overwrite stuff on a completely different plot.
-
-
-Some hints on the options
--------------------------
-
-Plugins should always support appropriate options to enable/disable
-them because the plugin user may have several plots on the same page
-where only one should use the plugin. In most cases it's probably a
-good idea if the plugin is turned off rather than on per default, just
-like most of the powerful features in Flot.
-
-If the plugin needs options that are specific to each series, like the
-points or lines options in core Flot, you can put them in "series" in
-the options object, e.g.
-
- var options = {
- series: {
- downsample: {
- algorithm: null,
- maxpoints: 1000
- }
- }
- }
-
-Then they will be copied by Flot into each series, providing default
-values in case none are specified.
-
-Think hard and long about naming the options. These names are going to
-be public API, and code is going to depend on them if the plugin is
-successful.
Removed: zorg/trunk/lnt/lnt/server/ui/static/flot/README.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/static/flot/README.txt?rev=156009&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/static/flot/README.txt (original)
+++ zorg/trunk/lnt/lnt/server/ui/static/flot/README.txt (removed)
@@ -1,90 +0,0 @@
-About
------
-
-Flot is a Javascript plotting library for jQuery. Read more at the
-website:
-
- http://code.google.com/p/flot/
-
-Take a look at the examples linked from above, they should give a good
-impression of what Flot can do and the source code of the examples is
-probably the fastest way to learn how to use Flot.
-
-
-Installation
-------------
-
-Just include the Javascript file after you've included jQuery.
-
-Generally, all browsers that support the HTML5 canvas tag are
-supported.
-
-For support for Internet Explorer < 9, you can use Excanvas, a canvas
-emulator; this is used in the examples bundled with Flot. You just
-include the excanvas script like this:
-
- <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="excanvas.min.js"></script><![endif]-->
-
-If it's not working on your development IE 6.0, check that it has
-support for VML which Excanvas is relying on. It appears that some
-stripped down versions used for test environments on virtual machines
-lack the VML support.
-
-You can also try using Flashcanvas (see
-http://code.google.com/p/flashcanvas/), which uses Flash to do the
-emulation. Although Flash can be a bit slower to load than VML, if
-you've got a lot of points, the Flash version can be much faster
-overall. Flot contains some wrapper code for activating Excanvas which
-Flashcanvas is compatible with.
-
-You need at least jQuery 1.2.6, but try at least 1.3.2 for interactive
-charts because of performance improvements in event handling.
-
-
-Basic usage
------------
-
-Create a placeholder div to put the graph in:
-
- <div id="placeholder"></div>
-
-You need to set the width and height of this div, otherwise the plot
-library doesn't know how to scale the graph. You can do it inline like
-this:
-
- <div id="placeholder" style="width:600px;height:300px"></div>
-
-You can also do it with an external stylesheet. Make sure that the
-placeholder isn't within something with a display:none CSS property -
-in that case, Flot has trouble measuring label dimensions which
-results in garbled looks and might have trouble measuring the
-placeholder dimensions which is fatal (it'll throw an exception).
-
-Then when the div is ready in the DOM, which is usually on document
-ready, run the plot function:
-
- $.plot($("#placeholder"), data, options);
-
-Here, data is an array of data series and options is an object with
-settings if you want to customize the plot. Take a look at the
-examples for some ideas of what to put in or look at the reference
-in the file "API.txt". Here's a quick example that'll draw a line from
-(0, 0) to (1, 1):
-
- $.plot($("#placeholder"), [ [[0, 0], [1, 1]] ], { yaxis: { max: 1 } });
-
-The plot function immediately draws the chart and then returns a plot
-object with a couple of methods.
-
-
-What's with the name?
----------------------
-
-First: it's pronounced with a short o, like "plot". Not like "flawed".
-
-So "Flot" rhymes with "plot".
-
-And if you look up "flot" in a Danish-to-English dictionary, some up
-the words that come up are "good-looking", "attractive", "stylish",
-"smart", "impressive", "extravagant". One of the main goals with Flot
-is pretty looks.
More information about the llvm-commits
mailing list